SwiftUI:以编程方式设置选择器的值

SwiftUI:以编程方式设置选择器的值,swiftui,picker,Swiftui,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 { Picke

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[$0])
               }
           }
       }
   }
}
struct MyView:View
{
变量颜色=[“红色”、“绿色”、“蓝色”]
@国家私有变量myclourindex=1
@国家私有var myclour=“绿色”
var body:一些观点
{
VStack
{
选择器(选择:$myclourindex,标签:文本(“选择颜色”))
{
ForEach(0..<颜色数)
{
文本(自身颜色[$0])
}
}
}
}
}
这可能非常明显,但我的问题是,如何根据存储在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)
               }
           }
       }
   }
}