TabView 中的 SwiftUI 导航标题

SwiftUI navigation titles within TabView

由于这个问题 中概述的答案中概述的原因,我的应用程序的菜单结构是 NavigationView -> TabView -> 具有不同导航标题的子视图。

问题是 .navigationTitle 为整个 TabView 提供了一个导航标题,而不是为每个子视图提供了一个。如何使用 TabView 设置多个导航标题,每个 sub-view 一个?

struct ContentView: View {
    var body: some View {
        NavigationView {
            TabView {
                Text("Hello")
                    .navigationTitle("Title One")
                    .tabItem {
                        Image(systemName: "square.stack")
                }
                Text("Hello Again")
                    .navigationTitle("Title Two")
                    .tabItem {
                        Image(systemName: "checkmark.square")
                }
            }
        }
    }
}

我们可以根据选项卡选择来定义标题。下面是一个简单的方法演示。用 Xcode 13 / iOS 15

测试
struct ContentView: View {
    @State var selection = 1

    var body: some View {
        NavigationView {
            TabView(selection: $selection) {
                Text("Hello")
                    .tabItem {
                        Image(systemName: "square.stack")
                }.tag(1)
                Text("Hello Again")
                    .tabItem {
                        Image(systemName: "checkmark.square")
                }.tag(2)
            }
            .navigationTitle(selection == 1 ? "First" : "Second") // << here !!
        }
    }
}