【发布时间】:2021-09-22 16:57:35
【问题描述】:
我已经开始学习 SwiftUI,但是在构建 NavigationView 时遇到了一些问题 - 我不确定这是否是一个错误,或者我是否误解了嵌套导航链接的工作原理!
这是我当前的代码:
import SwiftUI
struct ContentView: View {
var body: some View {
NavigationView {
ViewOne()
}
}
}
struct ViewOne: View {
@State var isActiveOne: Bool = true
var body: some View {
VStack {
Text("View One")
NavigationLink(
destination: ViewTwo(),
isActive: $isActiveOne,
label: { EmptyView() }
)
Button(
action: { self.isActiveOne = true },
label: { Text("Set isActiveOne=true") }
)
}
}
}
struct ViewTwo: View {
@State var isActiveTwo: Bool = true
var body: some View {
VStack {
Text("View Two")
NavigationLink(
destination: Text("Success!"),
isActive: $isActiveTwo,
label: { EmptyView() }
)
Button(
action: { self.isActiveTwo = true },
label: { Text("Set isActiveTwo=true") }
)
}
}
}
struct ContentView_Preview: PreviewProvider {
static var previews: some View {
ContentView()
}
}
我希望:
- NavigationView 显示 ViewOne
- ViewOne 具有 isActiveOne == true,因此会显示第一个 NavigationLink 目标(显示 ViewTwo)
- ViewTwo 具有 isActiveTwo == true,因此会显示第二个 NavigationLink 目标(显示“成功!”)
但是,当我在 iOS 14.5 模拟器上运行此代码时,第二个 NavigationLink 不会自动显示(我只看到 ViewTwo Button 文本)。
我还觉得奇怪的是,如果我默认 isActiveTrue 为 false,然后按下按钮,它会正确导航 - 默认“true”状态 + 嵌套导航链接的组合似乎是导致问题的原因。
知道这是否是 SwiftUI 中的错误?还是我在这里的设置做错了什么?
任何想法都会是一个巨大的帮助 - 我已经把头撞在墙上一段时间了......
【问题讨论】:
标签: swift swiftui navigation