Как изменить стандартное поведение iOS в обратном направлении, чтобы не переключаться между двумя видами - PullRequest
1 голос
/ 22 марта 2012

У меня есть приложение, дерево навигации которого описано на прикрепленном изображении. По сути, у меня есть два основных экрана (Домашний и Профиль), оба из которых могут получить доступ к экрану настроек. На этом экране настроек я могу перейти на множество разных экранов настроек, чтобы изменить их. Как только пользователь принимает изменения на любом из этих экранов, он возвращается к главному экрану настроек.

App Navigation Ожидаемое поведение кнопки «назад» следующее:

  • На экране настроек вернитесь на главную страницу или в профиль, в зависимости от того, как пользователь в первую очередь попал на экран настроек.
  • На любом из конкретных экранов S{x} необходимо вернуться на главный экран настроек.

В настоящее время я использую поведение по умолчанию, но у меня есть проблемы в следующем случае:

Home -> Settings -> S1 -> Settings -> S1 -> Settings

Если пользователь нажимает кнопку «Назад», я бы хотел, чтобы он вернулся на главный экран, но он возвращается к S1, затем обратно к настройкам, а затем обратно к S1 и так далее, в зависимости от того, сколько раз Я вошел в экран S1.

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

Ответы [ 2 ]

2 голосов
/ 22 марта 2012

Не управляйте иерархией контроллера представления вручную.Используйте UINavigationController, для этого он и предназначен.Когда вам нужно перейти с начального экрана на экран настроек, создайте экземпляр контроллера представления настроек и поместите его в стек.Когда вам нужно перейти от экрана настроек к S1, создайте экземпляр вашего контроллера S1 и поместите его в стек.Когда вам нужно вернуться с S1 на экран настроек, вытолкните его из стека.Когда вам нужно вернуться с экрана настроек на домашний экран, вытолкните его из стека.

1 голос
/ 22 марта 2012

Похоже, вы хотите использовать здесь стек. Каждый раз, когда вы переходите на новую страницу без использования кнопки «Назад», помещайте старую страницу в стек. Каждый раз, когда вы используете кнопку «Назад», выталкивайте последнюю добавленную страницу из стека. Таким образом, вы можете «вспомнить», на какую страницу вернуться, как вы сказали :) Надеюсь, это поможет!

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