重用LaunchScreen.storyboard xib

Reuse LaunchScreen.storyboard xib

我有一个 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)

然而,它的错误是:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Storyboard () doesn't contain a view controller with identifier 'someViewController''

显然,问题之一是 'someViewController'。我不知道 LaunchScreen 故事板是否有视图控制器,所以这就是我卡住的地方。

非常感谢任何指点。

someViewController其实应该是Interface Builder中设置的名字。恐怕没有简单的方法(如果有的话)重用 LaunchScreen.storyboard(实际上是 xib)——如果你在 Interface Builder 中查看它,没有 View Controller 那里,只有一个 view - 其余的都是在引擎盖下完成的。

现在要解决您的问题 - 您可以做两件事:

  1. 添加一个与您的启动屏幕相同的 "splash screen" 视图控制器,并仅在应用加载数据后将其关闭。我不确定,但请记住,这可能是 Apple 审查期间不批准的原因,因为您有意延长应用程序的启动时间。

  2. 我认为这种方式更好 - 向用户表明您的应用仍在加载一些数据,并在完成后刷新您的视图。