在Appdelegate中设置RootViewController

时间:2016-03-18 10:23:31

标签: ios iphone swift storyboard

我的应用中有故事板,但我不想在 info.plist 中设置Main storyboard file base name,我也不想#39; t想要为任何视图控制器场景设置 storyboard 中的入口点,即Is Initial View Controller

虽然我想用故事板中的一些场景启动应用程序,但所有人都向我显示黑屏。

当我尝试

let testob:testClass = testClass()
self.window?.rootViewController = testob

在AppDelegate中,它没有工作并且得到了相同的黑屏。

但是当我在info.plist中设置Main storyboard file base name时,在故事板中的入口点即Is Initial View Controller,每件事情都有效。

有没有解决办法呢?

3 个答案:

答案 0 :(得分:6)

您需要实例化窗口并使其成为键和可见。

let bounds = UIScreen.main.bounds
self.window = UIWindow(frame: bounds)
self.window?.rootViewController = rootViewController
self.window?.makeKeyAndVisible()

答案 1 :(得分:2)

您可以从故事板加载特定的视图控制器。

请参阅this answer

示例:

window?.rootViewController = initialViewController()

,其中

    private func initialViewController() -> UIViewController {
        if isUserLoggedIn {
            return UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("LoadingViewControllerIdentifier")
        } else {
            return UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("HomeViewControllerIdentifier")
        }
    }

答案 2 :(得分:1)

设置self.window?.rootViewController = testob后,您必须执行以下操作

[self.window makeKeyAndVisible]

此外,使用适当的方法从故事板初始化viewController