要将SwiftUI视图的@State状态交换为视图模型的@Published变量,可以按照以下步骤进行操作:
import SwiftUI
import Combine
class ViewModel: ObservableObject {
@Published var myVariable: String = ""
}
struct ContentView: View {
@State private var myVariable: String = ""
@ObservedObject var viewModel = ViewModel()
var body: some View {
VStack {
TextField("Enter text", text: $myVariable)
.textFieldStyle(RoundedBorderTextFieldStyle())
.padding()
Button(action: {
viewModel.myVariable = myVariable
}) {
Text("Update ViewModel")
}
}
}
}
在上述示例中,通过将视图的@State变量myVariable
绑定到文本框中,可以实时获取用户输入的值。当用户点击按钮时,将该值赋给视图模型的myVariable
变量。
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView().environmentObject(ViewModel())
}
}
通过将视图模型传递给视图的环境中,可以在预览中使用视图模型的数据。
这样,当用户在文本框中输入内容并点击按钮时,视图模型的myVariable
变量将被更新,从而实现了将SwiftUI视图的@State状态交换为视图模型的@Published变量。
领取专属 10元无门槛券
手把手带您无忧上云