한결과 레지아이스
TIL in SwiftUI about onAppear && Modal, 22/03/04 본문
오늘 42Seoul iOS 개발 동아리 ApusPacificus에서 진행중인 프로젝트 ApusCheckIn을 진행하며 배운 것을 정리해보았습니다.
FrontView(앱 시작 뷰)에서 NavigationLink를 통해 넘어간 뷰(CalendarView)에서, 넘어가자마자 모달이 뜨게 하고 싶었습니다.
onAppear을 통해 그것을 해낼 수 있었습니다.
.onAppear {
someStateVar = someValue
}
someStateVar의 상태의 따라 특정 모달을 띄워주는 뷰였는데, 뷰가 전환되자마자 onAppear 코드블럭이 실행되어 someValue에 해당하는 모달이 뜨게 되었습니다.
이 뷰는 ScrollView로 구성되어 있었는데, ScrollView에 요 모디파이어를 붙이니 잘 되었습니다. 근데 ScollView 내부의 VStack에 붙여도, 그 VStack 내부의 HStack에 붙여도 작동은 잘 하덥니다.. 다만 맨 밖의 ScrollView에 붙이는게 아무래도 젤 보기 좋아서 그리 했습니다.
Success!
문제는 모달이 뜨고 나서 해당 모달을 dismiss하면 CalendarView(넘어오자마자 모달을 띄운 뷰)가 아닌, 그 이전의 뷰(어플 시작 뷰 == FrontView)로 돌아간다는 것이었습니다..! 대체 왜?? 모르겠습니다..
해결은 했습니다.
FrontView에서는 .alert 모디파이어를 통해 팝업창을 띄워주고 있었는데, 그 위치가 문제였습니다.
<malfunctioning code>
// var body: some View {
// NavigationView {
// VStack {
// SomeView()
// }
// }
// .alert(someValues)
// }
<whatmademehappy code>
var body: some View {
NavigationView {
VStack {
SomeView()
}
}
.alert(someValues)
}
대충 이렇게 생긴 뷰였는데요, .alert 모디파이어가 현재는 NavigationView에 붙어있습니다. 하지만 고장나있었을때는 주석처리된 코드처럼 내부의 VStack에 .alert가 붙어있었습니다.
무슨차이일까요?? 모르겠습니다. 하지만 문제를 해결해서 행복합니다.
'Today I Learned > SwiftUI' 카테고리의 다른 글
TIL in Swift about Protocol/Extension & Function Overloading, 22/02/21 (0) | 2022.02.21 |
---|---|
TIL in SwiftUI about Computed Property & Extension, 22/02/19 (0) | 2022.02.19 |
TIL in Swift about MVVM, 22/02/17 (0) | 2022.02.17 |
TIL in Swift about Optional, 22/02/16 (0) | 2022.02.16 |
TIL in Swift, 22/02/15 (0) | 2022.02.15 |