2016-04-26 5 views
0

После выполнения восстановления состояния в моем приложении у меня возникают трудности с контроллерами моего представления.self.navigationController nil во время восстановления состояния

Моя проблема в том, что в viewDidLoad контроллера точки зрения Я пытаюсь восстановить свойство self.naigationController, которое равно nil.

Я установил контрольные точки в методе viewDidLoad каждого контроллера вида, который предшествует тому, который я пытаюсь восстановить. В первом представлении контроллера обнаружен навигационный контроллер. В каждом после этого, включая тот, который я пытаюсь восстановить, контроллер навигации nil.

Это вызывает ошибки, когда я не могу установить видимость навигационной панели, вид неуместны и т.д.

Кто-нибудь есть идея, почему это может быть?

+0

Контроллер навигации отсутствует во время 'viewDidLoad'? Или все еще отсутствует, когда завершено восстановление состояния? –

+0

Хороший вопрос. Это когда-то я делаю что-либо с моим контроллером. Почему вы так думаете? – grez

+0

Я не использовал восстановление состояния тонны, но возможно, что он восстанавливает контроллеры представлений в противоположном порядке, чтобы они были закодированы. Можете ли вы переместить код в 'viewWillAppear'? –

ответ

0

Попробуйте перевести код на viewWillAppear.

В отличие от viewDidLoad, viewWillAppear можно вызвать несколько раз, поэтому следите за тем, чтобы ваш код был идемпотентным. То есть убедитесь, что результаты - это то, что вы ожидаете, если метод вызывается повторно. Например, убедитесь, что вы не инициализируете новый subview, если представление уже добавлено.

+0

Спасибо. Это работает, но я все еще задаюсь вопросом, когда существует контроллер навигации и почему. – grez