首页 > 解决方案 > 在您单击以在 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 上以横向模式启动时,我看到两列“View 1”和“View2”。

在此处输入图像描述

我希望在左栏中看到“Link 1 Destination”,但未显示。

但是,当我单击切换侧边栏按钮时,“视图 1”被替换。

在此处输入图像描述

这是在 swiftui 中设置视图的方式的问题吗?

标签: iosswiftswiftuiswiftui-navigationview

解决方案


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

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

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


推荐阅读