在 SwiftUI 中更改选择器的导航标题

Tik*_*der 12 picker ios swift swiftui

当用户选择某些选项时,我想设置导航标题 Picker

这是我的选择模型:

enum AppIcon: CaseIterable, Identifiable {

    var id: Self {
        return self
    }

    case `default`
    case ethereum
    case litecoin

    var name: String {
        switch self {
        case .default:
            return "Bitcoin"
        case .ethereum:
            return "Ethereum"
        case .litecoin:
            return "Litecoin"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我的观点

struct ContentView: View {
    @State var icon: AppIcon = .default
    var body: some View {
        NavigationView {
            Form {
                Section {
                    Picker(selection: $icon, label: Text("Icon")) {
                        ForEach(AppIcon.allCases) { icon in
                            Text(icon.name).tag(icon)
                        }
                    }
                }
            }
            .navigationBarTitle("Appearance")
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我想得到这种行为:

在此处输入图片说明

但我试图放在.navigationBarTitle("Title")任何右括号之后,但它不起作用。

Kis*_*har 6

我试图解决问题。

struct ContentView: View {
    
    @State var icon: AppIcon = .default
    
    var body: some View {
        NavigationView {
            Form {
                Section {
                    Picker(selection: $icon, label: Text("Icon")) {
                        ForEach(AppIcon.allCases) { icon in
                            Text(icon.name).tag(icon)
                        }
                        .navigationBarTitle("Title") // for picker navigation title 
                    }
                    .navigationBarTitle("Appearance")
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 这个解决方案有两个问题。1)标题是突然出现的,而不是随视图滑入的。2)当您使用后退按钮退出此视图时,导航栏标题仍为“标题”,而不是恢复为“外观”标题。 (31认同)
  • 在 iOS 15 中,这会在呈现选择器之前更改视图的导航标题 (4认同)