24.05.16 09:06 작성
·
165
·
수정됨
0
안녕하세요. 이전 문의에 대한 답변 잘 확인했습니다.
답변 감사합니다.
//GridLayout
@Published var gridLayout: [GridItem] = [GridItem(.flexible())]
@Published var gridColumn: Double = 4.0
//init
init() {
gridSwitch()
}
//func
func gridSwitch() {
print("gridSwitch")
gridLayout = Array(repeating: GridItem(.flexible()), count: Int(gridColumn))
}
방금 실습 프로젝트 진도 마무리하고 grid 쪽 다시 보고 있는데요
gridSwitch() 함수에 print 넣고 체크해 보니
슬라이더 움직이면 위에 함수가 2번씩 호출됩니다.
gridLayout 과 gridColumn 2개 값이 @ObservedObject
되어 있어서 각각 변경이 되서 총 2번 호출되는건지요 ?
차후 저런 변수가 많이 들어가 있는 함수는
갯수만큼 호출될꺼 같은데. 어떻게 대응해야 하는지
효율적인 방식이 있는지 조언 부탁드려도 될까요 ?
강의 관련된 질문은 언제나 환영입니다 😄
코드 관련 상세하게 작성해주시면 더 좋아요! (상세코드를 붙여넣기 해주세요)
마크다운을 사용해서 편리하게 글을 작성하세요
먼저 유사한 질문이 있었는지 먼저 검색 해보는 습관~
인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요
답변 2
0
2024. 05. 22. 07:35
안녕하세요 랑프님
코드를 질문 주신 코드 확인하였습니다.
자답 올려주신 부분 중복 호출 방지해서 해결하신 부분 알려주셔서 감사합니다.
예제 코드 수정하여서 재 업로드 하겠습니다.
0
2024. 05. 16. 09:21
자답 입니다.
gridSwitch() 호출은 GalleryView 내
Slider 에서 2번씩 호출하고 있네요.
보니깐
Slider 의 onEditingChanged: 는 터치 시작과
끝날때 2번 호출해 주고 있네요.
아래처럼 바꾸니 1회만 호출합니다.
slider 터치시 true (현재슬라이더값)
slider 손때면 false (현재슬라이더값)
이라서 false 에 맞춰서 작동하게 하니 1회만 호출되고
잘 작동 됩니다.
true 4.0
false 3.0
vm.gridSwitch()
gridSwitch
//2. Slider
Slider(value: $vm.gridColumn, in: 2...4, step: 1) { value in
print("\(value) \(vm.gridColumn)")
if !value {
withAnimation(Animation.easeInOut(duration: 1.0)) {
print(" vm.gridSwitch()")
vm.gridSwitch()
}
}
}
.padding()