首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SwiftUI navigationBarItems在TabView中消失

SwiftUI navigationBarItems在TabView中消失
EN

Stack Overflow用户
提问于 2020-03-30 13:05:04
回答 1查看 703关注 0票数 2

我有一个包含导航条项目的视图,并将该视图嵌入到一个TabView中。但在执行此操作时,栏项目将不再出现。如果我在TabView外部调用视图,一切都会正常工作。

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

代码语言:javascript
复制
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")
    }
}

这里我漏掉了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-30 23:14:22

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

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

这就是你使用它的方式。

TabView1.swift

代码语言:javascript
复制
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

代码语言:javascript
复制
struct TabView2: View {
    var body: some View {
        NavigationView {
            NavigationLink(destination: YourNewView()) {
                Text("TabView 1")
            }
            .navigationBarTitle("Orders")
        }
    }
}

ContentView.Swift

代码语言:javascript
复制
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")
               }
        }
    }
}

希望它能有所帮助:)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60924367

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档