iosアプリの起動時の画面をコントロールする
ログイン状態など条件に応じてrootViewControllerを切り替えたかった。 ちょっと調べたところUIWindowのrootViewControllerを設定すれば良いらしい。
var window: UIWindow? let storyboard = UIStoryboard(name: "Main", bundle: nil) if (flag) { let mainViewController = storyboard.instantiateViewControllerWithIdentifier("MainViewController") let navigationController = UINavigationController(rootViewController: mainViewController) self.window!.rootViewController = navigationController } else { let loginViewController = storyboard.instantiateViewControllerWithIdentifier("LoginViewController") let navigationController = UINavigationController(rootViewController: loginViewController) self.window!.rootViewController = navigationController }
しかし、このようにすると最初のviewが表示される前に一瞬真っ暗な画面が表示されてしまった。
原因はデフォルトのrootViewControllerが設定されておらず、上記のコードの実行前に未設定のrootViewControllerを表示しようとしているためだった。
ひとまずlaunch中に表示するviewを作りデフォルトのrootViewControllerとして設定することで見かけ上は解決した。
launch前にrootViewControllerを設定する方法があればそれを使いたいが、ググっても見つからなかった。 より良い方法が見つかったら追記したい。