Связать элемент панели вкладок с контроллером навигации, который отображает второй контроллер представления в своем стеке? - PullRequest
0 голосов
/ 06 марта 2012

Я создаю приложение на основе вкладок. Одна из кнопок вкладок отображает контроллер навигации при нажатии. Который в свою очередь отображает контроллер корневого представления по умолчанию, связанный с этим контроллером навигации.

Я хочу позволить пользователю вернуться назад по умолчанию к контроллеру, который отображается при нажатии этой кнопки панели вкладок. Концептуально «основной» контроллер, который отображается, когда пользователь нажимает кнопку панели вкладок, будет вторым контроллером в стеке навигации.

Причина, по которой я это делаю, заключается в том, что «задний» контроллер должен быть своего рода экраном настроек. Изменение настройки фактически сделает «главный» контроллер недействительным и его необходимо будет воссоздать. Я знаю, что мог бы сделать экран настроек в качестве контроллера модального вида, но когда модальный контроллер должен быть отклонен после изменения настройки, мне придется уничтожить «главный контроллер позади и перестроить его.

Так что моя идея состоит в том, чтобы просто вытащить «главный» контроллер из стека на экран настроек, а затем, как только они выберут настройку, перенести новый экземпляр «основного» контроллера представления в стек.

Мои две идеи были реализовать это:

  • Установите корневой контроллер навигационных контроллеров на мой «задний» контроллер и переместите «главный» вид контроллера сверху. Затем каким-то образом переопределите кнопку панели вкладок, чтобы она всегда сначала отображала второй контроллер, который предоставляет кнопку возврата на панели навигации.
  • Другая идея состоит в том, чтобы установить «основной» контроллер вида в качестве корневого элемента навигационных контроллеров, а затем добавить пользовательскую кнопку «назад» на панель навигации, которая при щелчке каким-либо образом вставит «назад» контроллер перед текущим, а затем выскочит к нему при нажатии.

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

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

1 Ответ

0 голосов
/ 06 марта 2012

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

-tabBarController:didSelectViewController:

Здесь вы можете проверить, является ли выбранный контроллер вашим навигационным контроллером, а затем открыть нужный контроллер viewController.

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