[英]Why doesn't custom SwiftUI view animate on ViewModel state change?
[英]SwiftUI: Change view @State property from ViewModel
我有这样的日期选择器:
struct BookTimeView: View {
@ObservedObject var viewModel: BookTimeViewModel
@State var startTime = Date.now
var body: some View {
DatePicker(“pick time”, selection: $startTime, displayedComponents: .hourAndMinute)
}
}
初始 startTime 取决于来自后端的数据。
因此,在视图 model 中,我有从后端加载数据的 API 调用。
在成功回调中,我想更改 startTime。
问题:如何从我的 ViewModel 更改 startTime?
PS:可以直接将 DatePicker 与 ViewModel 绑定吗?
我试图将@State var startTime = Date.now
放在视图 model 中。 但它不起作用,我在 Xcode 中看到警告:
Accessing State's value outside of being installed on a View. This will result in a constant Binding of the initial value and will not update.
您可以直接绑定到@Published
属性,只需:
$viewModel.startTime
它将属于Binding<Date>
类型,即使我们将其声明为BookTimeViewModel
上的@Published
属性。
示例代码:
class BookTimeViewModel: ObservableObject {
@Published var startTime: Date = .now
}
struct BookTimeView: View {
@ObservedObject var viewModel: BookTimeViewModel
var body: some View {
DatePicker("pick time", selection: $viewModel.startTime, displayedComponents: .hourAndMinute)
}
}
类似于我在这里的回答。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.