在SwiftUI中,Picker视图需要遵循String协议。如果我们想要使用不符合String协议的数据作为Picker的选项,可以使用ForEach视图来遍历数据并创建Picker的选项。
下面是一个使用ForEach视图来创建Picker的示例代码:
import SwiftUI
struct ContentView: View {
let options = ["Option 1", "Option 2", "Option 3"]
@State private var selectedOption = "Option 1"
var body: some View {
VStack {
Picker("Options", selection: $selectedOption) {
ForEach(0 ..< options.count) { index in
Text(self.options[index])
}
}
.pickerStyle(DefaultPickerStyle())
Text("Selected option: \(selectedOption)")
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
在上面的示例中,我们有一个字符串数组options
,它不符合String协议。然后,我们使用ForEach视图来遍历数组的索引,并将每个选项作为文本添加到Picker视图中。
请注意,我们还使用了@State
属性包装器来创建一个和Picker的选中项关联的状态变量selectedOption
。当用户选择不同的选项时,该状态变量的值会自动更新。
这样,我们就可以使用不符合String协议的数据作为Picker的选项了。
上一篇:不符合HDFS模式的文件怎么办?
下一篇:不符合协议 Decodable