【问题标题】:SwiftUI: Change navigation bar title in the more tab?SwiftUI:在更多选项卡中更改导航栏标题?
【发布时间】:2020-09-27 09:10:00
【问题描述】:

我开始关注 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 个标签的“更多”标签相对应。这对用户来说很好。

但是我的问题是,当您单击“更多”标签时,您会看到标题栏和编辑按钮,标题为“更多”。它出现在我上面设置的标题栏下方。

所以我的问题是当用户在“更多”选项卡上时如何隐藏我的 titleBar 并且只在其他选项卡中显示它?

【问题讨论】:

    标签: swiftui


    【解决方案1】:

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

    回到你的问题,你只需要重新安排事情。首先,将 TabBar 设为顶层。然后是 NavigationView,你的内容就来了。稍后您可能会将每个视图外包给一个自己的文件。

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

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

    【讨论】:

    • 嗨,大卫,非常感谢。但是,我遇到了类似的问题,只是在链条的下方。从更多菜单中选择视图后,您将再次获得 2 个条形标题。
    • 嗨@Joby,你是完全正确的。让我再检查一下,看起来像一个愚蠢的错误
    • 我会就此问题向 Apple 发送反馈。
    猜你喜欢
    • 2018-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-17
    • 1970-01-01
    • 1970-01-01
    • 2015-12-24
    相关资源
    最近更新 更多