繁体   English   中英

SwiftUI 导航栏项在 TabView 中消失

[英]SwiftUI navigationBarItems disappear in TabView

我有一个包含导航栏项目的视图,并将该视图嵌入到TabView 但是这样做时,栏项目不再出现。 如果我在TabView之外调用视图,一切都会按预期工作。

下面是一个说明我的问题的小示例项目,请注意TabView不是在初始ContentView上调用的,而是稍后调用的:

import SwiftUI

struct ContentView: View {
    var body: some View {
        NavigationView{
            NavigationLink(destination: WarehouseOrderTabView()){
                Text("Click me")
            }
        }
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

struct WarehouseOrderTabView: View {
    var body: some View {
        TabView{
            TabView1().navigationBarTitle("Dashboard")
                .tabItem {
                    Image(systemName: "gauge")
                    Text("Dashboard")
            }

            TabView2().navigationBarTitle("Orders")
                .tabItem {
                    Image(systemName: "list.dash")
                    Text("Orders")
            }
        }
    }
}

struct TabView1: View {
    var body: some View {
        Text("TabView 1")
            //I would expect to see those bar items when displaying tab 1
            .navigationBarItems(trailing: (
                HStack{
                    Button(action: {
                    }, label: {
                        Image(systemName: "arrow.clockwise")
                            .font(.title)
                    })
                        .padding(.init(top: 0, leading: 0, bottom: 0, trailing: 20))
                    Button(action: {

                    }, label: {
                        Image(systemName: "slider.horizontal.3")
                            .font(.title)
                    })
                }
            ))
    }
}

struct TabView2: View {
    var body: some View {
        Text("TabView 2")
    }
}


我在这里缺少什么?

NavigationView可以嵌入在TabView ,反之亦然。

TabView包含可以包含您的视图的不同tabItem() (最多 5 个)。

这就是您可以使用它的方式。

TabView1.swift

struct TabView1: View {
    var body: some View {
        NavigationView {
            Text("TabView 1")
                .navigationBarTitle("Dashboard")
                .navigationBarItems(trailing:
                    HStack {
                        Button(action: {
                            // more code here
                        }) {
                            Image(systemName: "arrow.clockwise")
                                .font(.title)
                        }
                        Button(action: {
                            // more code here
                        }) {
                            Image(systemName: "slider.horizontal.3")
                                .font(.title)
                        }
                    }
                )
        }
    }
}

TabView2.swift

struct TabView2: View {
    var body: some View {
        NavigationView {
            NavigationLink(destination: YourNewView()) {
                Text("TabView 1")
            }
            .navigationBarTitle("Orders")
        }
    }
}

内容视图.Swift

import SwiftUI

struct ContentView: View {
    var body: some View {
        TabView {
            TabView1()
               .tabItem {
                   Image(systemName: "gauge")
                   Text("Dashboard")
               }
            TabView2()
               .tabItem {
                   Image(systemName: "list.dash")
                   Text("Orders")
               }
        }
    }
}

希望能帮助到你 :)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM