Может кто-нибудь объяснить UINavigationController setViewController и popToViewController - PullRequest
1 голос
/ 17 ноября 2011

Мне знакома идея создания нового viewcontroller и помещения его в стек.До сих пор я только что создал экземпляр моего контроллера представления и выдвинул его.Теперь я сталкиваюсь с проблемой, что мои 3 разных контроллера представления связаны между собой способами просмотра данных.Мой RootViewController имеет 3 иконки для запуска, и когда вы нажимаете на значок, вы нажимаете первый контроллер представления.В настоящее время я не устанавливаю контроллеры представления в массиве, так как я не уверен, что это меня покупает или как это работает.

Сценарий 1: Нажмите на значок 1 (нажмите vc1), нажмите на таблицу вПоповер в vc1, он будет подталкивать к vc3.Затем вы нажимаете на что-то в vc3, и оно перейдет к vc1.

Сценарий 2: Нажмите на значок 3 (нажмите vc3), нажмите на что-нибудь и перейдите к vc1.

Итак, проблема, с которой я столкнулся, заключается в сценарии 1, и кажется, чтонаиболее разумно вернуться к vc1, чтобы у них не было стека vc1 / vc3 / vc1, и они смотрят на данные дважды так.Но в сценарии 2, так как я начал с vc3 instd vc1, я должен нажать vc1.Но в обоих сценариях пользователь нажимает на одну и ту же вещь, чтобы перейти на vc1 с vc3, так как мне узнать, из какого viewController они пришли, чтобы выдвинуть или открыть vc1?

Так что я думаю, что именно здесь я подумал, что setViewControllers или popToViewController могут пригодиться, но я не уверен, как они работают, и если есть какой-нибудь простой пример фрагмента, который кто-то может предоставить, чтобы начать меня (при условии, что этот подход приемлем)).Спасибо!

Ответы [ 2 ]

1 голос
/ 17 ноября 2011

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

Звучит так, как будто вам иногда нужно выдвинуть текущий vc перед нажатием следующего vc.Вам нужно будет проверить количество массивов viewControllers - если текущее количество больше единицы, то всплывающее перед нажатием, в противном случае просто нажмите, когда вы находитесь в корневом контроллере представления.

Или вы можете использовать popToRootViewControllerAnimated:НЕТ каждый раз перед нажатием.

1 голос
/ 17 ноября 2011

UINavigationController - это то, что позволяет вам управлять своими представлениями.setViewController позволяет вам установить, какой контроллер обрабатывает ваше представление.popToViewController переносит текущий контроллер представления из стека в указанное представление.

IMO ... Последние 2 поддерживают логику спагетти и должны использоваться с осторожностью.

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