[英]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.