我的应用中有故事板,但我不想在 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
,每件事情都有效。
有没有解决办法呢?
答案 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