簡體   English   中英

SwiftUI:從 ViewModel 更改視圖 @State 屬性

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM