为什么NavigationView必须是顶层视图?

时间:2020-05-20 13:51:09

标签: ios swift swiftui

我是iOS和SwiftUI的新手-为什么NavigationView甚至存在?每当我们需要链接到某个地方时,为什么不只有NavigationLinks?

为什么NavigationView必须是顶层视图?从语义上讲,这是没有意义的,因为顶级View应该是VStackZstack

当前:

struct ContentView : View {
    var body: some View {
        NavigationView {
            VStack {
                Text("Hello World")
                NavigationLink(destination: DetailView()) {
                    Text("Do Something")
                }
            }
        }
    }
}

应该是:

struct ContentView : View {
    var body: some View {
            VStack {
            Text("Hello World")
            NavigationView {
                NavigationLink(destination: DetailView()) {
                    Text("Do Something")
                }
            }
        }
    }
}

有什么主意吗?

1 个答案:

答案 0 :(得分:2)

SwiftUI几乎免费为您提供了一大堆便利。

其中之一是称为NavigationView的接口构建块。

该界面构建块具有一些便利的功能,例如,为您提供自动导航界面(例如,通过NavigationLink跟随的视图的导航栏中的原始视图的后退按钮等)。 / p>

如果不是您的顶级视图,这些便利中的大多数根本就没有意义。

您是否需要较低级别的NavigationView的东西?我无法想象,但是我怀疑还有另外一个SwiftUI构建块可以实现它,它是专门针对上下文而设计的。