Перейти к следующему контроллеру с UINavigationController на iPhone - PullRequest
7 голосов
/ 24 августа 2010

Программа имеет навигационную панель и обычно при нажатии кнопки в viewController1 переходит к viewController2. при нажатии кнопки в viewController2 он переходит к viewController3. и пользователь может перейти назад от viewController3 к viewController2, а затем к viewController1, используя кнопку возврата на панели навигации.

Я хочу сделать кнопку, которая программно переводит пользователя непосредственно в viewController3 из viewController1. затем пользователь может перейти назад от viewController3 к viewController2 к viewController1.

Есть ли способ вставить два вида в контроллер навигации? или это другой способ добиться желаемого поведения? как мне это спроектировать?

Ответы [ 3 ]

9 голосов
/ 24 августа 2010

Извините, что неправильно прочитал ваш вопрос. Потому что вы хотите нажать 2 вида контроллера, а затем вернуться назад 1 на 1. Я думаю, что решение сейчас простое.

Вам нужно только нажать контроллер вида 2 раза, 1 без анимации и 1 с анимацией, например:

[viewController1.navigationController pushViewController:viewController2 animated:NO];
[viewController2.navigationController pushViewController:viewController3 animated:YES];

Итак, для пользователя это происходит так, как будто вы нажимаете только 1, а за сценой вы фактически нажимаете 2 контроллера вида. Затем, когда вы хотите вернуться, просто нужно выдвинуть 1 на 1.

4 голосов
/ 24 августа 2010

Вы можете напрямую установить стек навигации на UINavigationController, используя. setViewControllers: анимированные:. 1003 *

Например, если предположить, что этот код находится где-то в viewController1, как обработчик для нажатия кнопки в его представлении:

NSMutableArray* viewControllers = [self.navigationController.viewControllers mutableCopy];
UIViewController* controller = [[MyViewController2 alloc] init];
[viewControllers addObject:controller];
[controller release];
controller = [[MyViewController3 alloc] init];
[viewControllers addObject:controller];
[controller release];
[self.navigationController setViewControllers:viewControllers animated:YES];

Во-первых, бизнес создания с вызовом mutableCopy таков, что вы сохраняете все, что уже находится в стеке навигации.

0 голосов
/ 24 августа 2010

Можно выдвинуть 2 контроллера вида одновременно, но как только вы нажмете первый, свойство navigationController на текущем ViewController станет равным nil, так как он больше не находится на вершине стека, поэтому вам придется сделать ссылку на него , Я никогда не пытался нажимать 2 одновременно с анимацией, я не уверен, как это будет выглядеть.

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