Вызов pushViewController из функции дочернего контроллера - PullRequest
1 голос
/ 20 сентября 2011

У меня есть контроллер корневого представления, который подклассов UINavigationController. Он загружается в дочернем виде с UIButton. Когда эта кнопка нажата, я хочу позвонить из соответствующего контроллера представления дочернего представления (скажем, ChildViewController) в метод UINavigationController pushViewController: в родительском контроллере.

Как это возможно без прямой ссылки на родительский контроллер представления? Это достижимо, используя стандартный метод протокола, или я должен создать свой собственный?

Ответы [ 2 ]

3 голосов
/ 20 сентября 2011

Каждый UIViewController имеет свойство с именем navigationController.Если UIViewController является частью стека UINavigationController, вы можете использовать свойство navigationController следующим образом:

[self.navigationController pushViewController:yourNextViewController animated:YES];

Нет необходимости обращаться к rootViewController только для добавления нового ViewController в стек.Это могло бы стать действительно ужасным, если бы у вас были большие стеки навигации.

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

Надеюсь, это поможет.

0 голосов
/ 20 сентября 2011

Дочерний элемент UIViewController, содержащий вашего ребенка UIView и UIButton, должен иметь свойство parentViewController. Вы можете использовать это, чтобы получить слабую ссылку на ваш UINavigationController, где вы можете сообщение pushViewController:animated:

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