在 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 中设置视图的方式的问题吗?

问题很简单,当调用 .onAppearNavigationLink 不存在。 .onAppearlink1Active 设置为 true(我通过在 .onAppear 中的 print() 语句中打印值来验证这一点),但在主要 List 之前没有使用它视图已打开并显示在屏幕上。我真的不认为这是一个真正的“修复”,但你要显示目的地的唯一方法很简单,条件如下:

        (!link1Active ? Text("View 1") : Text("Link1 Destination"))

由于这是一个最小的可重现示例,我不确定你的用例,但我认为你需要重新考虑你如何表达你的观点。