В каком порядке вызываются методы представления при переходе от одного контроллера представления к другому? - PullRequest
3 голосов
/ 19 ноября 2011

Когда я перехожу с одного контроллера представления (назовем его MasterViewController) на другой (называемый DetailViewController), в каком порядке называются методы viewWillDisappear:, viewWillAppear: и т. Д. На каждом контроллере?

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

1 Ответ

7 голосов
/ 19 ноября 2011

Я создал простой проект на основе UINavigationController и добавил несколько операторов NSLog, чтобы узнать, в каком порядке они вызваны.

  1. Master prepareForSegue:
  2. Detail viewDidLoad
  3. Мастер viewWillDisappear:
  4. Деталь viewWillAppear:
  5. Отображается новый вид (с анимацией или без)
  6. Мастер viewDidDisappear: (после завершения анимации)
  7. Сведения viewDidAppear:

Однако при переключении между представлениями с использованием UITabViewController порядок отличается:

  1. SecondTab viewDidLoad
  2. SecondTab viewWillAppear:
  3. FirstTab viewWillDisappear:
  4. Отображается новый вид.
  5. FirstTab viewDidDisappear:
  6. SecondTab viewDidAppear:

Поэтому кажется, что вы не всегда можете рассчитывать на эти события, происходящие в одном и том же порядке - это может варьироваться в зависимости от природы контроллеров представления, которыми вы являетесьпереход между.

Есть ли какие-то важные моменты, которые я здесь упустил?

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