我对SwiftUI中导航的工作方式有些困惑。仅开始导航的视图是否需要NavigationView
?我有一个视图,其中一个NavigationView
与另一个视图有一个NavigationLink
。然后,第二个视图对第三个也是最后一个视图具有NavigationLink
。
但是,当我的第二个视图导航到我的第三个视图时,我在日志中收到此消息:
unbalanced calls to begin/end appearance transitions for <_TtGC7SwiftUI19UIHostingControllerVS_7AnyView_: 0x7f85d844bf90>.
我不知道我是否可以正确处理多个屏幕的导航,并且出现了一些非常奇怪的行为,在第二个屏幕上按“下一步”会使我回到第一个屏幕...
//This is the link in my first view, my seconds link is the same except it does to my next step and the tag is different
NavigationLink(
destination: PasswordView(store: self.store),
tag: RegisterState.Step.password,
selection: .constant(store.value.step)
)
答案 0 :(得分:1)
在SwiftUI中导航有点棘手,创建一个导航视图后,您无需在第二或第三视图中再次创建。我不确定您是如何首先创建它的。这是一个导航如何工作的示例。
import SwiftUI
struct ContentView: View {
var body: some View {
NavigationView {
VStack {
NavigationLink(destination: SecondView()) {
Text("Show Second View")
}.navigationBarTitle("FirstView", displayMode: .inline)
}
}
}
}
struct SecondView: View {
var body: some View {
NavigationLink(destination: ThirdView()) {
Text("Show Third view")
}.navigationBarTitle("SecondView", displayMode: .inline)
}
}
struct ThirdView: View {
var body: some View {
Text("This is third view")
.navigationBarTitle("ThirdView", displayMode: .inline)
}
}