在下面的代码中,我希望在选择按钮并调用对象的
clear
方法时清除 TextField 值(实际上,我的类有很多属性,所以我想清除它们所有调用“clear”功能)。
struct ContentView: View {
@State var object = Object()
var body: some View {
NewView(object: $object)
}
}
struct NewView: View {
@Binding var object: Object
var body: some View {
TextField("Enter some text", text: $object.text)
.border(Color.black, width: 1)
Button("Clear", action: {
object.text = ""
object.clear()
})
}
}
class Object {
var text = ""
func clear(){
self.text = ""
}
}
我见过其他关于如何做的问题
我对 SwiftUI 很陌生,我真的不知道我不知道什么 - 我应该使用 Publishers 或 ObservedObjects 之类的东西,还是环境对象可以工作?
问题是您没有将
text
属性与其他属性链接起来。所以,当 text
发生变化时,它无法通知 listener
(s),即 TextField
:
@Observable //<- add here
class Object {
...
}