Ios NavigationView中的多个文本字段视图未将输入绑定到ViewModel
我有一个NavigationView,其中有4个不同的视图通过NavigationLink推送到堆栈上 每个视图都有一个文本字段,其输入是$bind到ViewModel中的一个属性 当我输入文本并将新视图推送到堆栈上时,输入不会绑定/保存到ViewModel。我知道这一点,因为我尝试打印出以前输入的文本或在下一个视图中显示以前输入的文本 我做错了什么 这是我的密码Ios NavigationView中的多个文本字段视图未将输入绑定到ViewModel,ios,swift,swiftui,Ios,Swift,Swiftui,我有一个NavigationView,其中有4个不同的视图通过NavigationLink推送到堆栈上 每个视图都有一个文本字段,其输入是$bind到ViewModel中的一个属性 当我输入文本并将新视图推送到堆栈上时,输入不会绑定/保存到ViewModel。我知道这一点,因为我尝试打印出以前输入的文本或在下一个视图中显示以前输入的文本 我做错了什么 这是我的密码 class SignupNavigationViewModel: ObservableObject { var
class SignupNavigationViewModel: ObservableObject {
var email = ""
var username = ""
var password = ""
var reconfirmPassword = ""
}
// first view
struct SignupEmailView: View {
@ObservedObject var signupNavigationViewModel = SignupNavigationViewModel()
var body: some View {
NavigationView {
VStack {
HStack {
TextField("enter your e-mail", text: $signupNavigationViewModel.email )
}
NavigationLink("continue", destination: ConfirmCodeView())
Spacer()
}
}
}
}
// second view
struct ConfirmCodeView: View {
@ObservedObject var signupNavigationViewModel = SignupNavigationViewModel()
var body: some View {
VStack {
TextField("Enter code sent to your email", text: $signupNavigationViewModel.emailCode)
NavigationLink("confirm", destination: SignupUsername() )
}.navigationBarBackButtonHidden(true)
}
}
//etc..
您需要将相同的
SignupNavigationViewModel
实例传递到下一个视图。现在,它正在创建一个全新的实例
class SignupNavigationViewModel: ObservableObject {
@Published var email = ""
@Published var username = ""
@Published var password = ""
@Published var reconfirmPassword = ""
}
// first view
struct ContentView: View {
@ObservedObject var signupNavigationViewModel = SignupNavigationViewModel()
var body: some View {
NavigationView {
VStack {
HStack {
TextField("enter your e-mail", text: $signupNavigationViewModel.email )
}
NavigationLink("continue", destination: ConfirmCodeView(signupNavigationViewModel: signupNavigationViewModel)) //<-- Here
Spacer()
}
}
}
}
// second view
struct ConfirmCodeView: View {
@ObservedObject var signupNavigationViewModel : SignupNavigationViewModel //<-- Here
var body: some View {
VStack {
Text("Email: \(signupNavigationViewModel.email)")
TextField("Enter code sent to your email", text: $signupNavigationViewModel.emailCode)
NavigationLink("confirm", destination: Text("Destination") )
}.navigationBarBackButtonHidden(true)
}
}
class SignupNavigationViewModel:ObserveObject{
@已发布的var email=“”
@已发布的var username=“”
@已发布的var password=“”
@已发布的var reconfirmPassword=“”
}
//第一视图
结构ContentView:View{
@ObservedObject变量signupNavigationViewModel=signupNavigationViewModel()
var body:一些观点{
导航视图{
VStack{
HStack{
TextField(“输入您的电子邮件”,text:$signupNavigationViewModel.email)
}
NavigationLink(“继续”,目标:ConfirmCodeView(signupNavigationViewModel:signupNavigationViewModel))//