XCode 9:在AppDelegate中设置RootViewController会在启动应用程序后导致黑屏

时间:2017-10-10 08:08:54

标签: ios iphone swift xcode9

我目前正在更新我的应用程序以与iOS 11兼容。

在我的应用程序中,我在我的AppDelegate didFinishLaunchingWithOptions中设置了rootViewController,如下所示:

self.window.rootViewController = MainViewController()
self.window.makeKeyAndVisible()

在我的MainViewController中,我确定在启动时VC应该是什么样的初始视图控制器

  1. 如果不存在令牌 - >转到LoginViewController
  2. 如果令牌仍然有效 - >转到HomeViewController
  3. 这是我的MainViewController的viewDidLoad():

    override func viewDidLoad() {
        super.viewDidLoad()
        // main tab bar controller
        self.initTabBarMainController()
    
        // login page
        self.initLoginViewController()
    
        // checking the session
        let tokenExpired = SessionManager.sharedInstance.isTokenExpired()
        if Utilities.isLoggedIn() && SessionManager.sharedInstance.getSessionToken() != nil && !tokenExpired 
        {
          self.addChildViewController(self.mainTabViewController!)
          self.view.addSubview((self.mainTabViewController?.view)!)
        } else {
          self.addChildViewController(self.loginViewController!)
          self.view.addSubview((self.loginViewController?.view)!)
        }
    
        self.setupNotifications()
    
      }
    

    然而,在iOS 11中,当我尝试运行它时。它只会启动应用程序并陷入黑屏。

    注意:

    1. 应用程序没有挂起,手机没有挂起。该应用似乎不再加载视图。
    2. 它转到了正确的ViewController
    3. 的viewDidLoad()
    4. 我确定这是问题,因为当我尝试删除此代码并让应用程序在启动后转到其MainInterface时,没有问题。

2 个答案:

答案 0 :(得分:1)

尝试使用以下代码使其可见:

self.window.rootViewController = MainViewController()
self.window.makeKeyAndVisible()

MainViewController的{​​{1}}:

viewDidLoad

答案 1 :(得分:0)

编辑:大家好,它似乎只出现在XCode 9模拟器上。我今天再次尝试使用iOS 11版本的不同手机。工作正常。

我通过处理AppDelegate中的所有内容而不使用容器视图来解决问题,该容器视图将决定loginVC是否会显示或MainTabVC

  1. 在我的AppDelegate中初始化MainTabBarVC和LoginVC
  2. 在我的AppDelegate中设置登录和注销通知
  3. 处理我的AppDelegate中的rootViewController交换
  4. 我的AppDelegate中现有令牌的检查程序
  5. 我现在会使用它,因为我认为XCode 9或iOS 11中有一个错误,它不允许我在一个单独的ViewController中处理它,我将它们添加为childViewController,就像我以前一样。

    希望能尽快以最好的方式解决。 拥抱AppDelegate是一个眼睛。