在SwiftUI中,观察绑定值的更新可以通过几种不同的方式来实现。SwiftUI提供了一个@ObservedObject
属性包装器来观察一个遵循ObservableObject
协议的类的变化,以及一个@State
属性包装器来跟踪视图内部状态的变化。
ObservableObject
协议的实例绑定到视图上。ObservableObject
协议。当你需要在视图中显示来自外部数据源的数据,并且希望这些数据更新时视图能够自动刷新时,可以使用@ObservedObject
。当视图内部状态需要被跟踪和响应时,可以使用@State
。
假设我们有一个简单的数据模型,它遵循ObservableObject
协议,并且有一个可观察的属性:
import SwiftUI
import Combine
class User: ObservableObject {
@Published var name: String = "John Doe"
}
struct ContentView: View {
@ObservedObject var user = User()
var body: some View {
VStack {
Text("User name:")
Text(user.name)
.font(.largeTitle)
.padding()
Button(action: {
self.user.name = "Jane Doe"
}) {
Text("Change Name")
.foregroundColor(.blue)
}
}
}
}
在这个例子中,当按钮被按下时,user.name
的值会改变,由于name
属性被标记为@Published
,任何观察这个属性的视图都会自动更新。
如果你发现视图没有响应数据的变化,可能是因为:
@Published
: 确保你的ObservableObject
中的属性使用了@Published
来标记它们。@ObservedObject
来绑定你的数据模型到视图上。init
方法中设置了初始值,确保这些值在视图显示之前已经被设置。通过以上方法,你可以有效地在SwiftUI中观察绑定值的更新,并确保你的视图能够响应数据的变化。
领取专属 10元无门槛券
手把手带您无忧上云