我有一个我想重复使用的LaunchScreen.storyboard。
我遇到的问题是viewDidLoad被太快触发了。当应用程序启动时,会在后台完成一些初始处理。由于处理是在后台进行的,因为viewDidLoad会在一秒钟之后触发,因此会有短暂的间隙,但是在后台处理完成之前大约需要5秒。
我想在viewDidLoad的开头加载并显示LaunchScreen.storyboard,以扩展它直到完成后台工作。
我试图改变这一点:
let storyboard = UIStoryboard(name: "LaunchScreen", bundle: nil)
let vc = storyboard.instantiateViewControllerWithIdentifier("someViewController") as! UIViewController
self.presentViewController(vc, animated: true, completion: nil)
然而,它出错了:
由于未捕获的异常而终止应用 ' NSInvalidArgumentException',原因:' Storyboard()不包含带标识符的视图控制器 ' someViewController''
显然,其中一个问题是“someViewController'”。我不知道LaunchScreen故事板是否有一个视图控制器,这就是我被卡住的地方。
绝对会欣赏任何指示。
答案 0 :(得分:2)
someViewController
实际上应该是Interface Builder中设置的名称。我担心没有简单的方法(如果有的话)重用LaunchScreen.storyboard
(实际上是xib
) - 如果你在Interface Builder中查看它,就没有{{ 1}}那里,只有一个View Controller
- 其余的都是在引擎盖下完成的。
现在要解决您的问题 - 您可以做两件事:
添加"启动画面"视图控制器与启动屏幕相同,只有在应用程序加载数据后才会将其关闭。我不确定,但请记住,在Apple审核期间,这可能会引起不满,因为您故意延长应用程序的启动时间。
在我看来,这种方式更好 - 向用户表明您的应用仍在加载某些数据,并在完成后刷新您的观看次数。