swift - SwiftUI 多屏导航
问题描述
我对 SwiftUI 中导航的工作方式有点困惑。是否只有开始导航的视图需要一个NavigationView
?我有一个视图,一个视图具有NavigationView
第二NavigationLink
个视图。然后第二个视图具有NavigationLink
第三个和最后一个视图。
但是,当我的第二个视图导航到第三个视图时,我在日志中收到以下消息:
unbalanced calls to begin/end appearance transitions for <_TtGC7SwiftUI19UIHostingControllerVS_7AnyView_: 0x7f85d844bf90>.
我不知道我是否正确处理了多个屏幕的导航,并且我遇到了一些非常奇怪的行为,在我的第二个屏幕上按 Next 会以某种方式让我回到我的第一个屏幕......
//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)
)
解决方案
在 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)
}
}
推荐阅读
- .htaccess - 我可以使用重写来显示替代域吗?
- php - Silverstripe 3:我可以在 silverstripe 中为某些页面类型设置自定义错误页面吗?
- python - 步词字谜python
- c# - 如何在 C# 中更新级联选择字段
- reactjs - 如何在 redux 中链接操作
- javascript - 如何做到这一点,当我选择一个选项时,它将显示一个选项并隐藏另一个
- python - 对 python、列表/生成器对象感到困惑
- sql - 用于关系数据库的表和 PK /FK
- ruby-on-rails - 显示值与返回值不一致
- java - NoSuchErrorMethod,Library.jar 适用于 Api 级别 28 但不是更低级别