Ios SwiftUI:以编程方式关闭工作表
我正在使用SwiftUI,我正在尝试为我的应用程序实现身份验证逻辑 我有一个带有Register按钮的LoginView,如果我点击它,我会使用一个工作表来显示RegisterView。用户注册后,LoginView(后台)将转到HomeView,RegisterView将消失。问题是RegisterView并没有消失Ios SwiftUI:以编程方式关闭工作表,ios,swift,swiftui,Ios,Swift,Swiftui,我正在使用SwiftUI,我正在尝试为我的应用程序实现身份验证逻辑 我有一个带有Register按钮的LoginView,如果我点击它,我会使用一个工作表来显示RegisterView。用户注册后,LoginView(后台)将转到HomeView,RegisterView将消失。问题是RegisterView并没有消失 @ObservedObject var viewModel = RegisterViewModel() @EnvironmentObject var authenticatedU
@ObservedObject var viewModel = RegisterViewModel()
@EnvironmentObject var authenticatedUser : AuthenticatedUser
@Environment(\.presentationMode) var presentationMode
如果我删除authenticatedUser.setLogged行,那么它可以工作,但它只是封装用户并存储令牌。提供的代码是不可测试的,所以只需使用idea即可-尝试以下操作
ButtonWithLoadStateView(title: K.REGISTER, isLoading: self.$vm.isLoading) {
self.viewModel.isLoading = true
self.viewModel.register() { user in
DispatchQueue.main.async {
self.authenticatedUser.setLogged(user)
}
self.presentationMode.wrappedValue.dismiss()
}
}
@LalaCip,我看不到您的代码,但很可能在用户设置上,您的视图层次结构被重建,因此与以前的表示模式的绑定连接被中断。通过延迟用户分配,我们给了演示文稿一个取消的机会,然后才重建视图层次结构。
ButtonWithLoadStateView(title: K.REGISTER, isLoading: self.$vm.isLoading) {
self.viewModel.isLoading = true
self.viewModel.register() { user in
DispatchQueue.main.async {
self.authenticatedUser.setLogged(user)
}
self.presentationMode.wrappedValue.dismiss()
}
}