是否有一个标准的方法来绑定,比如说,TextField
到枚举的关联值?
所以,鉴于此:
enum Choice {
case one(String)
case two(String)
}
我可以以某种方式将它用作视图中的绑定吗:
@State var choice: Choice = .one("")
var body: some View {
TextField("", text: $choice) // <- this clearly wouldn't work
}
这样如果choice
被设置为choice = .one("")
,然后 TextField 将更新关联值one
.
EDIT
为了澄清,是否可以只绑定每个的关联值,所以如果choice
变量是.one
, then .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)
}
}
}
}
然后你可以简单地传递文本属性:
TextField("", text: $choice.text)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)