是否有一种标准方法可以将 a 绑定TextField到枚举的关联值?
所以,鉴于此:
enum Choice {
case one(String)
case two(String)
}
Run Code Online (Sandbox Code Playgroud)
我可以以某种方式将它用作视图中的绑定吗:
@State var choice: Choice = .one("")
var body: some View {
TextField("", text: $choice) // <- this clearly wouldn't work
}
Run Code Online (Sandbox Code Playgroud)
这样,如果choice设置为choice = .one(""),则 TextField 将更新 的关联值one。
编辑
澄清一下,是否可以只绑定每个的关联值,因此如果choice变量是.one,那么.one的关联值就会改变;与.two、 等相同。
您可以扩展枚举并添加带有 getter 和 setter 的文本属性:
extension Choice {
var text: String {
get {
switch self {
case let .one(string): return string
case let .two(string): return string
}
}
set {
switch self {
case .one: self = .one(newValue)
case .two: self = .two(newValue)
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后你可以简单地传递文本属性:
TextField("", text: $choice.text)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4806 次 |
| 最近记录: |