100 Days of SwiftUI - Day 43 ~
Project 9: Navigation
Navigation
에 대해 자세하게 알아보는 기술 프로젝트이다.
Day 44
NavigationStack의 처음으로 되돌아가기
- path가 기본 타입의 배열인 경우, removeAll() 메서드를 사용.
NavigationPath
인 경우, 새로운 인스턴스를 생성하여 할당하기.
@State private var path = NavigationPath()
//이후 초기화하고 싶으면
path = NavigationPath()
@Binding 프로퍼티 래퍼
상위 뷰(@State 프로퍼티 래퍼가 정의된 뷰) 바깥(하위 뷰)에 있는 뷰에 대해 전달하고 수정할 수 있음.
@State private var wifiEnabled = false
...
VStack {
Toggle(isOn: $wifiEnabled) {
Text("Enable wifi")
}
TextField("Enter user name", text:$userName)
//바인딩을 전달
wifiImageView(wifiEnabled: $wifiEnabled)
}
...
struct wifiImageView: View {
//상위에서 정의된 @State 바인딩을 저장
@Binding var wifiEnabled: Bool
var body: some View {
Image(systemName: wifiEnabled? "wifi" : "wifi.slash")
}
}
NavigationStack 저장과 로드
Codable
을 사용하여 스택을 저장할 수도 있고, 로드할 수도 있다.
[참고]
https://developer.apple.com/documentation/swiftui/navigationpath