SwiftUI:以编程方式设置 Picker 的值

Posted

技术标签:

【中文标题】SwiftUI:以编程方式设置 Picker 的值【英文标题】:SwiftUI: Programmatically setting value for Picker 【发布时间】:2020-02-17 08:42:29 【问题描述】:

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])
               
           
       
   

这可能很明显,但我的问题是如何根据存储在 myColour 中的字符串值而不是索引来设置部分?

【问题讨论】:

【参考方案1】:

实际上,几乎相同(测试并适用于 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)
               
           
       
   

【讨论】:

有没有办法在不使用后退按钮的情况下以编程方式关闭选择器?

以上是关于SwiftUI:以编程方式设置 Picker 的值的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI:如何根据 Picker 的值更新 ForEach 循环的范围

SwiftUI 从另一个视图中捕获 Picker 值

Swiftui Multi Picker 以最小最大值更改选择

将 SwiftUI Picker 绑定到字典中保存的值

SwiftUI:以编程方式关闭警报

在 SwiftUI Picker 中为 NSManagedObject 设置默认值?