点击注销时 SwiftUI 将应用程序重置为登录屏幕

Posted

技术标签:

【中文标题】点击注销时 SwiftUI 将应用程序重置为登录屏幕【英文标题】:SwiftUI Reset App to Login Screen when Tapping Logout 【发布时间】:2021-10-13 20:04:21 【问题描述】:

我正在使用 SwiftUI 构建一个应用程序,并具有使用 Django Rest 进行身份验证的登录功能。当用户成功登录时,他们将被带到使用选项卡视图的主屏幕。选项卡视图之一是帐户页面(导航视图),用户可以通过点击按钮退出。

当他们注销时,我希望它把他们带回登录屏幕,目前这是使用 if 语句和 @State 变量来捕获按下注销按钮的时间:

    @State var logout = false
    var body: some View 
        if (logout) 
            Test()
         else 
            VStack
                
                Text("Account View")
                Spacer()
                Spacer()
                Button(action: 
                    self.logout = true
                , label: Text("Logout"))
                
            
        
    

在这种情况下,Test() 是登录屏幕,但是当用户返回此屏幕时,底部的标签栏仍然显示。

如何重置应用以使标签栏不显示?

【问题讨论】:

能否包含包含TabView 的视图的代码?我怀疑您的登录管理可能需要在视图层次结构中更高层确定... 【参考方案1】:

存储一个变量来检查用户是否按下了注销可能不是最好的解决方案。如果你想做 登录和注销工作,您应该将视图放入NavigationController

通过实现NavigationController,您可以重置/调用您的默认登录屏幕,该屏幕不会显示类似TabView 的任何其他内容

【讨论】:

道歉我对 SwiftUI 还很陌生,导航控制器和使用导航视图一样吗?如何重置或调用我的默认登录屏幕? 是的,NavigationController 和 NavigationView 是一样的。如果您的应用程序将有很多视图,NavigationController 不是您的最佳选择。如果你有很多意见,你应该参考this。如果您没有很多视图,请坚持使用 NavigationController 并参考this。还有this 了解如何重置为登录。 谢谢阿萨德!

以上是关于点击注销时 SwiftUI 将应用程序重置为登录屏幕的主要内容,如果未能解决你的问题,请参考以下文章

在 SwiftUI 中重置绑定变量

Facebook 登录 + SwiftUI:登录/注销后不调用 loginButton 和 loginButtonDidLogOut

为啥不解析在注销时重置 PFuser?

SwiftUI 按钮点击重置 SpriteKit 动画 - 这是一个错误吗?

SwiftUI - 防止列表在项目选择时将滚动位置重置为顶部

在 swiftUI 中点击列表条目时呈现全屏视图