SwiftUI:在更多标签中更改导航栏标题吗?

时间:2020-09-27 09:10:00

标签: swiftui

我开始对swiftUI有所了解。因此,我在导航视图中有一个简单的tabView,如下所示。

import SwiftUI

struct BasicView: View {
    var climbList: [ClimbDetail]
    var body: some View {
        NavigationView{
           VStack{
            Text("").navigationBarTitle("Climbers Log", displayMode:.inline)
                TabView {
                    Text("Search").tabItem{
                        Image(systemName:"magnifyingglass")
                        Text("Search")
                    }
                    Text("Stats").tabItem{
                        Image(systemName:"list.dash")
                        Text("Stats")
                    }
                    ClimbList(climbs: climbList).tabItem{
                        Image(systemName: "square")
                        Text("Climbs")
                    }
                    Text("Log").tabItem{
                        Image(systemName:"square.and.pencil")
                        Text("Log")
                    }
                    
                    Text("Profile").tabItem{
                        Image(systemName:"person.circle")
                        Text("Profile")
                    }
                    Text("Settings").tabItem{
                        Image(systemName:"gear")
                        Text("Settings")
                    }
                    Text("Add Climb").tabItem{
                        Image(systemName:"plus")
                        Text("Add Climb")
                    }
                }
            }
        }
    }
}

通常它可以按预期工作,但是,由于我有7个标签,因此它在第5个标签的“更多”标签中显示。这对用户很好,很好。

但是,我的问题是,当您单击“更多”标签时,会出现一个标题栏,并以“更多”作为标题的编辑按钮。出现在我在上方设置的标题栏下方。

Title errors

所以我的问题是,当用户位于“更多”选项卡上并且仅在其他选项卡中显示该标题栏时,如何隐藏它的标题栏?

1 个答案:

答案 0 :(得分:0)

首先,感谢您的提问。我不知道Apple默认为TabBars提供太长时间提供更多页面。我一直都需要那个。

回到您的问题,您只需要重新排列。首先,使TabBar成为顶层。然后是NavigationView,这里是您的内容。稍后,您可以将每个视图外包到自己的文件中。

TabView {

    NavigationView
    {
        VStack
        {
            Text("Search")
        }
        .navigationBarTitle("Climbers Log", displayMode:.inline)
    }.tabItem {
        Image(systemName:"magnifyingglass")
        Text("Search")
    }

 

每个视图都有自己的NavigationView ..然后它可以工作。