代码之家  ›  专栏  ›  技术社区  ›  nc14

TabView Swift UI中的NavigationView

  •  0
  • nc14  · 技术社区  · 4 年前

    Navigation View 在一个 Tab View

    导航视图 .tabItem 因此视图显示为主应用程序导航的一部分,因此我尝试以下操作:

    struct ContentView: View {
        var body: some View {
                TabView {
                
            NavigationView {
                
                .tabItem {
                    Text("Home")
                }
                        
                Text("Tab bar test")
                    .navigationBarTitle("Page One")
            }
    }
    

    这不适用于错误消息

    Cannot infer contextual base in reference to member 'tabItem'
    

        var body: some View {
            TabView {
            
        NavigationView {
                    
            Text("Tab bar test")
                .navigationBarTitle("Page One")
        }
    }
        .tabItem {
            Image(systemName: "1.circle")
            Text("Home")
        }
    }
    

    它构建得很好,但是选项卡栏没有显示。

    我希望对其他人有用的首要问题是。。。

    为什么我做不到 通过嵌套创建选项卡栏项 直接在 (根据我的第一个例子)?

    我认为这是一个类似的问题 this one this one 但他们似乎在使用 .选项卡项 直截了当的 ContentView 就像我想和你在一起一样 NavigationView

    我可能误解了一些简单的事情,但我现在一点也不明白。

    1 回复  |  直到 4 年前
        1
  •  1
  •   jnpdx    4 年前

    .tabItem 应在表示该选项卡的视图上用作修饰符。

    在第一个示例中,这不起作用,因为语法错误--您试图在中打开闭包时使用它 NavigationView { NavigationView { }.tabItem(...)

    作为 整个的 TabView NavigationView

    如果您缩进代码以便可以看到层次结构,那么您的两个示例可能已经更清楚地揭示了正在发生的事情。尝试在Xcode中选择代码并使用Ctrl-I使Xcode为您正确格式化。

    struct ContentView : View {
        var body: some View {
            TabView {
                NavigationView {
                    Text("Tab bar test")
                        .navigationBarTitle("Page One")
                }
                .tabItem { //note how this is modifying `NavigationView`
                    Image(systemName: "1.circle")
                    Text("Home")
                }
                
            }
        }
    }