【问题标题】:SwiftUI Picker with option for no selection in iOS16SwiftUI Picker 在 iOS16 中带有无选择选项
【发布时间】:2022-10-05 00:43:27
【问题描述】:

我正在使用带有不选择选项的 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))
                        }
                    }
                }
            }
        }
    }
}

iOS15中,selection为nil时,Picker行右侧不显示文字

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

    标签: swiftui swiftui-picker


    【解决方案1】:

    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")")
                    }
                }
            }
        }
    }
    

    【讨论】:

      【解决方案2】:

      这意味着对于 iOS16,如果不添加额外的“nil”值“Option”,就不再可能具有相同的行为?

      在 iOS 16 之前,可以将所选值设置为空字符串,以便选择器中不显示任何选择/文本。

      还是有另一种解决方案来解决旧行为?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-12-12
        • 2020-05-05
        • 2020-04-04
        • 2022-11-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多