Ответ 1
Новое в iOS 7 - это жестом салфетки для пота в UINavigationController
; вы можете провести пальцем слева направо, чтобы сделать то, что обычно делается с помощью кнопки "Назад" . Вы должны следить за тем, что поп-переход отменяется.
Нажатие кнопки "Назад" по-прежнему работает так, как вы ожидаете:
- Пользователь удаляет кнопку "Назад"
-
viewWillDisappear
называется -
viewDidDisappear
называется - Выпущен контроллер с нажатой клавишей
Завершение прокрутки в щелчку, как нажатие кнопки назад
- Пользователь начинает прокручивать слева направо.
-
viewWillDisappear
называется - Пользователь выполняет жестов салфетки
-
viewDidDisappear
называется - Выпущен контроллер с нажатой клавишей
Отмененные салфетки для работы по-подобному
- Пользователь начинает прокручивать слева направо.
-
viewWillDisappear
называется - Пользователь прерывает жестов сабля (реверсив его или не перетягивая достаточно далеко вправо).
-
viewWillAppear
называется -
viewDidAppear
называется
Обновите свои ожидания и методы жизненного цикла вашего представления соответственно.
Следует отметить, что viewWillDisappear
вызывается во всех случаях, даже если пользователь отменяет позы. Это может оказаться ложью; если жестом салфетки поцелуя прерван, ваш взгляд не исчезнет, не так ли?
Как и все мы, я стараюсь балансировать вызовы addObserver/removeObserver
в моем приложении, чтобы предотвратить сбои. Я переопределяю методы жизненного цикла контроллера просмотра viewWillAppear/viewWillDisappear
для ведения домашнего хозяйства и поддерживаю флаг setupPerformed
, чтобы предотвратить добавление наблюдателей более одного раза во время жизни контроллера. Более того, я полагался на этот трюк, чтобы определить, будет ли диспетчер представлений собираться со стека контроллера навигации и впоследствии выпущен, чтобы я мог знать, когда именно оторвать моих наблюдателей.
iOS 7 усложнил этот шаблон. Я больше не могу полагаться на то, что контроллер вида срывается, когда вызывается viewWillDisappear
. Я должен ожидать, что он может обернуться, кричать "просто шутить" и снова позвонить viewWillAppear/viewDidAppear
.