나는 프로젝트에서 작업하려는 존재하고 해망에서 NavigationView 를 사용하여 상태이며 구속력이 있습니다. 이유는 내가 이 일을 하는 것은 거기에는 버그에서@환경(.presentationMode)var presentaionMode:바인딩 모델입니다. 원인이 되는 이상한 행동입니다. 그것은 이 게시물에서 설명하는 여기에.
아래 예제에는 세 개의 뷰를 점진적으로드하여 보기입니다. 첫번째 두 가지 콘텐츠를 NavView1 현재와 완벽하게 해. 그러나,일단 NavView2 로드하는 버튼을 사용하의 상태를 변경할 수 있습니 presentNavView2 끝까지 추가하여 NavView2 에서 보기 스택과를 해제 하지 않으로 예상된다. 어떤 생각이 왜 이 될 것인가?
콘텐츠
struct ContentView: View {
@State private var presentNavView1 = false
var body: some View {
NavigationView {
List {
NavigationLink(destination: NavView1(presentNavView1: self.$presentNavView1), isActive: self.$presentNavView1, label: {
Button(action: {
self.presentNavView1.toggle()
}, label: {
Text("To NavView1")
}) // Button
}) // NavigationLink
} // List
.navigationTitle("Home")
} // NavigationView
} // View
}
NavView1
struct NavView1: View {
@State private var presentNavView2 = false
@Binding var presentNavView1: Bool
var body: some View {
List {
NavigationLink(destination: NavView2(presentNavView2: self.$presentNavView2), isActive: self.$presentNavView2, label: {
Button(action: {
self.presentNavView2.toggle()
}, label: {
Text("To NavView2")
}) // Button
}) // NavigationLink
Button(action: {
self.presentNavView1.toggle()
}, label: {
Text("Back")
})
} // List
.navigationTitle("NavView1")
} // View
}
NavView2
struct NavView2: View {
@Binding var presentNavView2: Bool
var body: some View {
VStack {
Text("NavView2")
Button(action: {
self.presentNavView2.toggle()
}, label: {
Text("Back")
}) // Button
} // VStack
.navigationTitle("NavView2")
}
}