iOS - определите, какой UIViewController был ранее показан в UINavigationController - PullRequest
5 голосов
/ 10 февраля 2012

Мне нужно определить, что UIViewController было ранее показано в UINavigationController.Моя навигация имеет 3 уровня глубины, на уровне 2 мне нужно определить, попал ли я сюда с толчка с уровня 1 или я попал сюда с щелчка с уровня 3. Как я могу сделать это легко?

Ответы [ 3 ]

4 голосов
/ 10 февраля 2012

Реализация метода UINavigationControllerDelegate:

 - (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated

и запросите его, чтобы узнать текущий отображаемый контроллер представления:

 navigationController.topViewController

Это тот, с кого ты пришел.

3 голосов
/ 10 февраля 2012

Вы можете просмотреть весь стек UINavigationController, используя свойство viewControllers.

int count = [navigationController.viewControllers count];

topController = [navigationController.viewControllers objectAtIndex:count - 1];
previousController = [navigationController.viewControllers objectAtIndex:count - 2];
//...
//...
rootController = [navigationController.viewControllers objectAtIndex: count - count];
2 голосов
/ 08 апреля 2012

iOS 5.0 добавлена ​​ [UIViewController isMovingToParentViewController] .Во время viewWillAppear и viewDidAppear возвращается YES, если вы используете контроллер представления с меньшим номером, NO в противном случае.Название, к сожалению, сбивает с толку - вы могли бы подумать, что [UIViewController isMovingFromParentViewController] будет правильным методом для вызова.

Однако от имени всех cheapskates, устройства второго поколения которых застряли на iOS 4.2.1, пожалуйста, не используйте функции iOS 5, если это не нужно.

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