点击注销时 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 将应用程序重置为登录屏幕的主要内容,如果未能解决你的问题,请参考以下文章
Facebook 登录 + SwiftUI:登录/注销后不调用 loginButton 和 loginButtonDidLogOut
SwiftUI 按钮点击重置 SpriteKit 动画 - 这是一个错误吗?