2015-12-15 4 views
2

У меня есть LaunchScreen.storyboard, который я бы хотел использовать повторно.Reuse LaunchScreen.storyboard xib

Проблема, с которой я сталкиваюсь, заключается в том, что viewDidLoad запускается слишком быстро. Когда приложение запускается, происходит некоторая первоначальная обработка. Поскольку обработка выполняется в фоновом режиме, есть короткий пробел, потому что viewDidLoad срабатывает через секунду, но вот за 5 секунд до того, как фоновая обработка будет выполнена.

Я хотел бы загрузить и отобразить LaunchScreen.storyboard в начале viewDidLoad, чтобы продлить его до тех пор, пока не будет выполнен фоновый материал.

Я пытаюсь адаптировать этот:

let storyboard = UIStoryboard(name: "LaunchScreen", bundle: nil) 
let vc = storyboard.instantiateViewControllerWithIdentifier("someViewController") as! UIViewController 
self.presentViewController(vc, animated: true, completion: nil) 

Однако его erroring с:

Нагрузочный приложение из-за неперехваченного исключением 'NSInvalidArgumentException', причина: «Раскадровка() Безразлично 't содержит контроллер вида с идентификатором ' someViewController ''

Очевидно, что один из проблемы - «someViewController». Я не знаю, есть ли в раскадровке LaunchScreen контроллер вида, поэтому я застрял.

Определенно оцените любые указатели.

ответ

2

someViewController должно быть фактически именем, заданным в Interface Builder. Я боюсь, что нет простого способа (если есть) повторного использования LaunchScreen.storyboard (что фактически является xib) - если вы посмотрите на него в Interface Builder, там нет View Controller, только view - остальное делается под капот.

Теперь решить проблему - вы можете сделать две вещи:

  1. Добавить «заставка» контроллер представления, идентичный экран запуска и отклонить его только после того, как приложение загрузило данные. Я не уверен, но имейте в виду, что это может быть резонанс для неодобрения во время обзора Apple, поскольку вы намеренно продлеваете запуск своей заявки.

  2. Этот способ, на мой взгляд, лучше. Укажите пользователю, что ваше приложение по-прежнему загружает некоторые данные и обновляет свои представления после его завершения.

+0

Я не уверен, что все изменилось с момента опубликования этого ответа, но в Xcode 8.1 LaunchScreen.storyboard содержит ViewController, а не только представление. – charmingToad