注销和登录后屏幕变黑

Posted

技术标签:

【中文标题】注销和登录后屏幕变黑【英文标题】:After Logout and Login Screen becomes black 【发布时间】:2019-02-14 05:47:13 【问题描述】:

我使用用户默认值来存储登录和注销信息,注销后当我再次登录时,UI 更改,我尝试了不同的解决方案,但没有得到任何合适的解决方案。

我尝试使用 if else 语句。如果条件为真,则显示主屏幕,否则显示登录屏幕。 下面是我的代码

我使用的登录:

@IBAction func signInAction(_ sender: Any) 
    defaults.set(true, forKey: "status")

对于我使用的注销:

@IBAction func logOutAction(_ sender: Any) 
    defaults.set(false, forKey: "status")
    defaults.synchronize()

    dismiss(animated: true, completion: nil)
    let loginVC = self.storyboard?.instantiateViewController(withIdentifier: "ViewController") as! ViewController
    self.present(loginVC)
    let appDel: AppDelegate = UIApplication.shared.delegate as! AppDelegate
    appDel.window?.rootViewController = loginVC

我在 AppDelegate.swift 中使用了:

if(status == true)
        let appDel = UIApplication.shared.delegate as! AppDelegate

        let mainVC = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "DrawerTabsController") as! DrawerTabsController

        let menuVC = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "DrawerViews") as! DrawerViews

        let navigationController = UINavigationController(rootViewController: mainVC)
        appDel.drawerController.screenEdgePanGestureEnabled = true

        appDel.drawerController.mainViewController = mainVC
        appDel.drawerController.drawerViewController = menuVC

        appDel.window?.rootViewController = appDel.drawerController
        appDel.window?.makeKeyAndVisible()
     else 
        let rootVC = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "ViewController") as! ViewController

//ViewController is LoginVC

        let appDelegate = UIApplication.shared.delegate as! AppDelegate
        appDelegate.window?.rootViewController = rootVC
    

导航栏 UI 更改。

【问题讨论】:

在你的其他部分尝试 self.window?.makeKeyAndVisible()。 试过了,还是一样。 【参考方案1】:

此答案不适用于您的代码,我只是分享了我在整个 ios 应用程序中使用的流程。就像魔术一样。

我认为您需要更改应用流程。

首先打开您的仪表板屏幕,在仪表板屏幕中以viewDidAppear 方法检查登录状态并显示带有导航的登录屏幕(如果您想从登录屏幕导航注册屏幕或忘记密码屏幕,则导航)。

在登录屏幕中。 调用 api 并获得成功登录状态后,只需关闭登录屏幕(如果您显示导航,则只需关闭导航控制器)。

在这个流程中不需要改变你的根视图控制器,非常简单的流程。

【讨论】:

以上是关于注销和登录后屏幕变黑的主要内容,如果未能解决你的问题,请参考以下文章

Flutter Authentication 从登录屏幕到登录屏幕使用 Google 登录和注销

账户注销完自动登录账户,并且不需要再点击屏幕的账户头像

录制时 Xcode Instrument 屏幕变黑

AsyncStorage 在本机反应中隐藏登录屏幕

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

Laravel 重定向 Auth::guart('admin') 注销到管理员登录屏幕