更新 SwiftUI 导航栏标题

Posted

技术标签:

【中文标题】更新 SwiftUI 导航栏标题【英文标题】:Updating SwiftUI navigation bar title 【发布时间】:2021-03-11 05:29:47 【问题描述】:

我有一个Form 视图,将导航栏标题设置为“设置”,Picker 视图位于Form 视图内,将导航栏标题设置为“选项”。

导航到Picker 视图时,导航栏标题不会设置为“选项”,但后退按钮文本会。此外,当导航回Form 视图时,导航栏标题更改为“选项”。

如何在Form 视图中将导航栏标题设为“设置”,而在Picker 视图中将导航栏标题设为“选项”?谢谢!

var body: some View 
    NavigationView 
        Form 
            Picker(selection: $currentSelection, label: Text("Options")) 
                ForEach(0 ..< options.count) 
                    Text(options[$0])
                
            
            .navigationBarTitle("Options", displayMode: .inline)
        
        .navigationBarTitle("Settings", displayMode: .inline)
    

【问题讨论】:

【参考方案1】:

将导航标题修饰符放在Picker 中。同样,来自Picker 项目的相同文本视图用于在Form 中显示选择,我们需要使选项标题有条件。

这是一个方法演示。使用 Xcode 12.4 / ios 14.4 测试

Form 
    Picker(selection: $currentSelection, label: Text("Options")) 
        ForEach(0 ..< options.count) 
            if $0 != currentSelection 
               Text(options[$0])
                .navigationBarTitle("Options", displayMode: .inline)
             else 
               Text(options[$0])
            
        
    

.navigationBarTitle("Settings", displayMode: .inline)

【讨论】:

以上是关于更新 SwiftUI 导航栏标题的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI 中的 QLPreviewController 缺少导航栏

SwiftUI 搜索栏与导航栏一致

导航栏内和导航标题下方的 SwiftUI 分段选择器

Objective C 到 SwiftUI 隐藏导航栏

使用 SwiftUI 设置导航栏标题字体

SwiftUI - 设置状态栏背景颜色以与导航栏对齐