Разработка под iOS: по каким причинам [[self navigationController] viewControllers]; вернул бы ноль? - PullRequest
2 голосов
/ 09 мая 2011

следующее утверждение возвращает ноль ...

NSArray *viewControllersInNavStack = [[self navigationController] viewControllers];

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

Большое спасибо за вашу мудрость!

Ответы [ 3 ]

3 голосов
/ 09 мая 2011

Не похоже на вашу проблему, но в документах говорится: «Возвращает контроллер навигации только в том случае, если контроллер представления находится в его стеке. Это свойство равно nil, если контроллер навигации не может быть найден».

Сначала проверьте, возвращает ли [self navigationController] ноль. Если нет, то viewControllers] должен, но сначала разбить его.

1 голос
/ 09 мая 2011

Какую точку вы проверяете? Вполне может быть, что self.navigationController еще не заполнен средой. Можете ли вы подтвердить, что self.navigationController не равен 0x0?

и, если это так, вы можете переместить свой код из init (я полагаю, там, где он есть) в viewDidLoad;

0 голосов
/ 09 мая 2011

Я нашел проблему. Этот оператор вызывался в ответ на уведомление ApplicationWillResignActive. Что ж, один из других контроллеров представления выше по стеку также ожидал того же уведомления, и его обработчик вытолкнул этот контроллер представления из стека вместе со всеми другими контроллерами представления глубже в стеке, включая тот, который выполнил код выше. Поэтому к тому времени, когда код был выполнен, его контроллер представления больше не находился в стеке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...