从Appdelegate扎根到Viewcontrollers

时间:2019-05-02 08:43:25

标签: ios swift uinavigationcontroller

UIApplicationDelegate-在didFinishLaunchingWithOptions中检查是否通过用户身份验证以进行网络呼叫,并在响应块中根据成功和失败的条件根据成功和失败的条件写入root代码,以将root植根到主屏幕(着陆屏幕) )以及失败根源到登录屏幕。但是我面临着一个翻转的问题,它没有扎根,为了成功,它正在显示初始viewcontroller并降落到home viewcontroller。

if dev_token == deviceToken{
//  Constants.setValueInUserDefaults(objValue: "no", for: "logincheck")                        
    if let controller = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "SWRevealViewController") as? SWRevealViewController {
         if let window = self.window, let rootViewController = window.rootViewController {
             var currentController = rootViewController
             while let presentedController = currentController.presentedViewController {
                 currentController = presentedController
             }
             currentController.present(controller, animated: true, completion: nil)
          }
     }
}else{
    self.goToLogin()
    //Constants.setValueInUserDefaults(objValue: "yes", for: "logincheck")                                        
}

1 个答案:

答案 0 :(得分:1)

  

检查用户身份验证是否通过了网络认证   调用,然后在响应块中编写生根代码

不要在AppDelegate / didFinishLaunchingWithOptions方法中应用此行为,移动到新的其他视图控制器中。

您可以做的是制作一个初始启动场景(视图控制器),并将其始终作为根,因此您可以在从网络调用中获得响应后确定根视图控制器。

此外,采用这种方法是一个好主意,因为您将能够在启动画面中显示一个指示符,以指示存在“等待中的东西”。