注销和登录屏幕变黑后

时间:2019-02-14 05:47:13

标签: ios swift

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

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

我用于登录的

@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更改。

enter image description here

1 个答案:

答案 0 :(得分:1)

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

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

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

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

在此流程中无需更改您的根视图控制器,这是非常简单的流程。