SwiftUI中TabView内的导航标题

8
基于这篇文章中提到的原因,我的应用程序菜单结构为NavigationView -> TabView -> 具有不同导航标题的子视图。
问题在于,.navigationTitle只为整个TabView提供一个导航标题,而不是每个子视图都有一个。如何使用TabView拥有多个导航标题,每个子视图一个?
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")
                }
            }
        }
    }
}
1个回答

8
我们可以根据选项卡的选择来定义标题。下面是一种简单的方法演示。使用 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 !!
        }
    }
}

1
这个代码可以运行,但是当你尝试添加一个导航栏按钮时它并不会显示出来。显然,TabView 不应该放在 NavigationView 里面,而应该相反。请参考 https://stackoverflow.com/a/60933674。 - John
1
将NavigationStack放在TabView中意味着我的NavigationDestingation(isPresented:)视图不会覆盖TabBar,这会导致奇怪的功能。但是我无法弄清如何正确设置另一种方式的标题。 - Kurt L.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接