【问题标题】:Setting RootViewController in Appdelegate在 Appdelegate 中设置 RootViewController
【发布时间】:2016-07-05 01:25:14
【问题描述】:

我的应用程序中有 storyboard,但我不想在 info.plist 中设置 Main storyboard file base name,也不想设置在 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)时,一切正常。

有什么解决办法吗?

【问题讨论】:

标签: ios iphone swift storyboard


【解决方案1】:

您需要实例化窗口并使其具有关键性和可见性。

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

【讨论】:

    【解决方案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")
            }
        }
    

    【讨论】:

      【解决方案3】:

      设置 self.window?.rootViewController = testob 后,需要进行如下操作

      [self.window makeKeyAndVisible]
      

      另外,使用适当的方法从情节提要中初始化 viewController

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-13
        • 2012-11-05
        • 2020-05-13
        • 2021-12-17
        • 1970-01-01
        相关资源
        最近更新 更多