为什么我的Picker显示不出来

259 阅读1分钟

SwiftUI大大简化了写代码的复杂度。写iOS的时候,Picker虽然算不上多难,但代码还是比较繁琐。如果要改变默认的样式,或者把类似的东西迁移到macOS的话,那复杂度就倍增了。

SwiftUI的出现极大简化了这个繁琐的工作。不过SwiftUI也有一些奇怪的行为。比如选中的选项显示不出来。

一个简单的例子。

let items = ["A", "B", "C"]

@State var selected: String = ""

var body: some View {

    Picker("", selection: $selected) {

        ForEach(items, id: \.self) { item in

            Text(item)

                .tag(item)

        }

    }

    .padding()

}

这样Picker就能正常显示,也能正常选择。

但如果selected变成了Optional<String>类型的话,整个行为就变得很怪异。而这并没有任何异常提示,代码也能正常运行。显示出来的Picker可以选择,但不会把选择的项目显示出来。