Ошибка массива контроллера UINavigation - PullRequest
0 голосов
/ 16 мая 2011

Мне просто интересно, с какой ошибкой я столкнулся, когда высовывал свой UINavigationController. Каким бы ни был UIViewController, в котором я сейчас нахожусь, я реализовал контроллер выхода из системы, который возвращается к корневому контроллеру в моем UINavigationController. Основной код, который делает это, указан здесь.

NSLog(@"Root Controller: %@", [[self.navigationController.viewController objectAtIndex:0] class]);
[self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:0] animated:YES];
NSLog(@"Root Controller: %@", [[self.navigationController.viewController objectAtIndex:0] class]);

Это то, что отображает консоль.

Root Controller: DetailViewController
Root Controller: (null)

Однако, когда я изменяю вышеуказанный код на:

NSLog(@"Root Controller: %@", [[self.navigationController.viewController objectAtIndex:0] class]);
[self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:1] animated:YES];
NSLog(@"Root Controller: %@", [[self.navigationController.viewController objectAtIndex:0] class]);

Результаты в консоли отображаются как:

Root Controller: DetailViewController
Root Controller: DetailViewController

Некоторое время меня беспокоило, почему, когда я подключил UINavigationController к DetailViewController, он не запустил метод ViewWillAppear для обновления информации для входа в систему. Мне кажется, что когда я открываю индекс 0, он обращается к объекту массива, который находится за пределами границ, но когда я перетаскиваю на индекс 1, именно там находится текущий корневой контроллер. Кто-нибудь знает, в чем причина?

1 Ответ

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

Я предполагаю, что self.navigationController устанавливается в ноль после выталкивания self из стека.

Если это так, похоже, что обращение к контроллеру представления по индексу 1 не сбрасываетсяself.navigationController до нуля (либо потому, что self - это контроллер представления с индексом 1, либо какой-то вызов в viewWill | Сделал? Появляется, что он устанавливает его снова).

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