如何让视图反映绑定对象的属性在 SwiftUI 内部发生变化?

问题描述 投票:0回答:1

在下面的代码中,我希望在选择按钮并调用对象的

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 之类的东西,还是环境对象可以工作?

swiftui view binding state
1个回答
0
投票

问题是您没有将

text
属性与其他属性链接起来。所以,当
text
发生变化时,它无法通知
listener
(s),即
TextField
:

@Observable //<- add here
class Object {
    ...
}
© www.soinside.com 2019 - 2024. All rights reserved.