SwiftUI 选择器在 iOS16 中具有不选择的选项

Gor*_*Cat 9 swiftui swiftui-picker

我使用的 Picker 没有选择,在 iOS15 中它工作正常,但在 iOS16 中它有一个默认值,我如何删除这个默认值,我不需要在 Picker 行右侧显示文本当选择为零时。

struct ContentView: View {
    
    @State private var selection: String?
    let strengths = ["Mild", "Medium", "Mature"]
    
    var body: some View {
        NavigationView {
            List {
                Section {
                    Picker("Strength", selection: $selection) {
                        ForEach(strengths, id: \.self) {
                            Text($0).tag(Optional($0))
                        }
                    }
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在iOS15中,当selection为nil时,Picker行右侧不显示任何文本
在此输入图像描述

但在iOS 16中,相同的代码会导致不同的结果,当selection为nil时它有一个默认值 在此输入图像描述

Car*_*ten 19

Xcode 14.1 Beta 3 日志:“选择器:选择“nil”无效并且没有关联的标签,这将给出未定义的结果。”

要解决此日志,您需要添加一个使用 nil 标签的选项。

struct ContentView: View {

    @State private var selection: String?
    let strengths = ["Mild", "Medium", "Mature"]

    var body: some View {
        NavigationView {
            List {
                Section {
                    Picker("Strength", selection: $selection) {
                        Text("No Option").tag(Optional<String>(nil))
                        ForEach(strengths, id: \.self) {
                            Text($0).tag(Optional($0))
                        }
                    }
                    Text("current selection: \(selection ?? "none")")
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)