Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/120.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios SwiftUI:以编程方式关闭工作表_Ios_Swift_Swiftui - Fatal编程技术网

Ios SwiftUI:以编程方式关闭工作表

Ios SwiftUI:以编程方式关闭工作表,ios,swift,swiftui,Ios,Swift,Swiftui,我正在使用SwiftUI,我正在尝试为我的应用程序实现身份验证逻辑 我有一个带有Register按钮的LoginView,如果我点击它,我会使用一个工作表来显示RegisterView。用户注册后,LoginView(后台)将转到HomeView,RegisterView将消失。问题是RegisterView并没有消失 @ObservedObject var viewModel = RegisterViewModel() @EnvironmentObject var authenticatedU

我正在使用SwiftUI,我正在尝试为我的应用程序实现身份验证逻辑

我有一个带有Register按钮的LoginView,如果我点击它,我会使用一个工作表来显示RegisterView。用户注册后,LoginView(后台)将转到HomeView,RegisterView将消失。问题是RegisterView并没有消失

@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()
   }
}