更新 SwiftUI 导航栏标题

时间:2021-03-11 05:29:47

标签: ios swiftui swiftui-navigationview

我有一个 Form 视图将导航栏标题设置为“设置”,而 Picker 视图中的一个 Form 视图将导航栏标题设置为“选项”。< /p>

导航到 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)
    }
}

enter image description here

1 个答案:

答案 0 :(得分:1)

将导航标题修饰符放在 Picker 内。此外,由于 Picker 项中的相同文本视图用于呈现 Form 中的选择,因此我们需要将选项标题设为条件。

这是方法的演示。使用 Xcode 12.4 / iOS 14.4 测试

demo

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)