使用按鈕重置狀態變數的最佳方法是什么。我嘗試了很多不同的功能,但都沒有奏效。
我正在嘗試使用此按鈕:
primaryButton: .destructive(Text("Delete")) {
Code
},secondaryButton:
.cancel()
要重置這些狀態變數:
@State var statsValue1 = 0
@State var statsValue2 = 0
@State var statsValue3 = 0
@State var statsValue4 = 0
@State var statsValue5 = 0
@State var statsValue6 = 0
(在主要內容視圖中)
uj5u.com熱心網友回復:
如何使用視圖模型,@Published屬性包裝器會通知模型的任何更改,并且該reset函式會創建一個新實體
struct Model {
var value1 = 0
var value2 = 0
var value3 = 0
}
class ViewModel : ObservableObject {
@Published var model = Model()
func reset() {
model = Model()
}
}
以及內容視圖中的簡單測驗邏輯
struct ContentView : View {
@StateObject var viewModel = ViewModel()
var body : some View {
VStack(spacing: 20) {
Text("Value 1: \(viewModel.model.value1)")
Text("Value 2: \(viewModel.model.value2)")
Text("Value 3: \(viewModel.model.value3)")
Divider()
Button ( "Delete", role: .destructive, action: viewModel.reset )
Button { viewModel.model.value1 = 1 } label: { Text("Increment value 1") }
Button { viewModel.model.value2 = 1 } label: { Text("Increment value 2") }
Button { viewModel.model.value3 = 1 } label: { Text("Increment value 3") }
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/367842.html
上一篇:如果我調整視窗大小,為什么導航選單中的工具按鈕不起作用?
下一篇:我無法系結箭頭鍵事件
