在 iPad 上单击以显示边栏之前,三列导航视图不会更新
Three Column Navigation View does not update until you click to show the sidebar on iPad
鉴于此视图:
struct ContentView: View {
@State var link1Active: Bool = false
var body: some View {
NavigationView {
List {
NavigationLink(destination: Text("Link1 Destination"), isActive: $link1Active) {
Text("Click me 1")
}
NavigationLink(destination: Text("Link2 Destination")) {
Text("Click me 2")
}
}
Text("View 1")
Text("View 2")
}
.onAppear {
link1Active = true
print("in here!")
}
}
}
当应用程序在 iPad 以横向模式启动时,我看到两列“视图 1”和“视图 2”。
我希望在左栏中看到“Link 1 个目的地”,但未显示。
然而,当我点击切换侧边栏按钮时,“视图 1”被替换。
这是在 swiftui 中设置视图的方式的问题吗?
问题很简单,当调用 .onAppear
时 NavigationLink
不存在。 .onAppear
将 link1Active
设置为 true(我通过在 .onAppear
中的 print()
语句中打印值来验证这一点),但在主要 List
之前没有使用它视图已打开并显示在屏幕上。我真的不认为这是一个真正的“修复”,但你要显示目的地的唯一方法很简单,条件如下:
(!link1Active ? Text("View 1") : Text("Link1 Destination"))
由于这是一个最小的可重现示例,我不确定你的用例,但我认为你需要重新考虑你如何表达你的观点。
鉴于此视图:
struct ContentView: View {
@State var link1Active: Bool = false
var body: some View {
NavigationView {
List {
NavigationLink(destination: Text("Link1 Destination"), isActive: $link1Active) {
Text("Click me 1")
}
NavigationLink(destination: Text("Link2 Destination")) {
Text("Click me 2")
}
}
Text("View 1")
Text("View 2")
}
.onAppear {
link1Active = true
print("in here!")
}
}
}
当应用程序在 iPad 以横向模式启动时,我看到两列“视图 1”和“视图 2”。
我希望在左栏中看到“Link 1 个目的地”,但未显示。
然而,当我点击切换侧边栏按钮时,“视图 1”被替换。
这是在 swiftui 中设置视图的方式的问题吗?
问题很简单,当调用 .onAppear
时 NavigationLink
不存在。 .onAppear
将 link1Active
设置为 true(我通过在 .onAppear
中的 print()
语句中打印值来验证这一点),但在主要 List
之前没有使用它视图已打开并显示在屏幕上。我真的不认为这是一个真正的“修复”,但你要显示目的地的唯一方法很简单,条件如下:
(!link1Active ? Text("View 1") : Text("Link1 Destination"))
由于这是一个最小的可重现示例,我不确定你的用例,但我认为你需要重新考虑你如何表达你的观点。