【发布时间】:2021-08-04 21:03:31
【问题描述】:
我尝试在 swift 5 中实现登录屏幕,但登录导航链接似乎没有从我的视图模型中检查 isActive 变量。当我第一次单击它时,它会引导我进入下一个视图,尽管登录数据不正确。当我回去尝试再次登录时,它会检查数据。
登录视图:
import SwiftUI
struct LoginView: View {
@ObservedObject var viewModel: LoginViewModel
var username_text_field: some View {
TextField("Username", text: $viewModel.username)
}
var password_secure_field: some View {
SecureField("Password", text: $viewModel.password)
}
var login_button: some View {
NavigationLink(
destination: MenuView(),
isActive: $viewModel.is_valid
) {
Text("LOGIN").onTapGesture {
viewModel.login()
}
}
}
var body: some View {
NavigationView {
VStack {
Group {
username_text_field
password_secure_field
login_button
}
}
}
}
}
登录视图模型:
import SwiftUI
final class LoginViewModel: ObservableObject {
@Published var username = ""
@Published var password = ""
@Published var is_valid = false
func login() {
self.is_valid = false
}
}
这种方法有问题还是我遗漏了什么?
【问题讨论】: