SwiftUI:以编程方式为 Picker 设置值
SwiftUI: Programmatically setting value for Picker
Internet 上的所有示例都显示了以下类型的用于实现选择器的代码:
struct MyView: View
{
var colours = ["Red", "Green", "Blue"]
@State private var myColourIndex = 1
@State private var myColour = "Green"
var body: some View
{
VStack
{
Picker(selection: $myColourIndex, label: Text("Choose a colour"))
{
ForEach(0 ..< colours.count)
{
Text(self.colours[[=10=]])
}
}
}
}
}
这可能很明显,但我的问题是如何根据存储在 myColour 中的字符串值而不是索引来设置部分?
实际上,几乎相同(测试并适用于 Xcode 11.2 / iOS 13.2):
struct MyView: View
{
var colours = ["Red", "Green", "Blue"]
@State private var myColourIndex = 1
@State private var myColour = "Green"
var body: some View {
VStack {
Picker("Choose a colour", selection: $myColour) {
ForEach(colours, id: \.self) { colour in
Text(colour)
}
}
}
}
}
Internet 上的所有示例都显示了以下类型的用于实现选择器的代码:
struct MyView: View
{
var colours = ["Red", "Green", "Blue"]
@State private var myColourIndex = 1
@State private var myColour = "Green"
var body: some View
{
VStack
{
Picker(selection: $myColourIndex, label: Text("Choose a colour"))
{
ForEach(0 ..< colours.count)
{
Text(self.colours[[=10=]])
}
}
}
}
}
这可能很明显,但我的问题是如何根据存储在 myColour 中的字符串值而不是索引来设置部分?
实际上,几乎相同(测试并适用于 Xcode 11.2 / iOS 13.2):
struct MyView: View
{
var colours = ["Red", "Green", "Blue"]
@State private var myColourIndex = 1
@State private var myColour = "Green"
var body: some View {
VStack {
Picker("Choose a colour", selection: $myColour) {
ForEach(colours, id: \.self) { colour in
Text(colour)
}
}
}
}
}