Документация для viewWillAppear:
не совсем понятна, но посмотрите, что там написано:
Этот метод вызывается в ответ на
вид добавляется либо напрямую, либо
косвенно к окну. Вы добавляете взгляды
в окно, используя
addSubview: метод, чтобы добавить их в
иерархия представления окна. Вы также можете
добавить представление косвенно несколькими способами,
в том числе, толкая его на
стек навигации или представив его
модально (используя
presentModalViewController: анимированные:
метод). Этот метод вызывается раньше
вид фактически добавляется к
окно и перед любой анимацией
сконфигурировано.
Методы viewDidAppear:
и viewWillAppear:
будут вызываться, только если вы:
- Добавление их в окно (добавление в представление не считается - это должно быть окно)
- Использование
pushViewController:
или presentModalViewController:animated:
или переключение вкладок в контроллере вкладок или любая другая ситуация, когда предоставленный Apple контроллер представления добавляет контроллер представления и его представление для вас.
В ситуации, когда вы добавляете представление в другое представление, вы должны сами вызывать viewWillAppear:
и viewDidAppear:
на контроллере представления, иначе они не произойдут.
Я не знаю, почему viewDidLoad
изначально не вызывался для вас. Он всегда будет вызываться после loadView
, когда средство доступа к свойству view
вызывается на контроллере впервые, если не происходит ошибка. Возможно, загрузка просмотра не удалась (вам нужно проверить журнал консоли).
Вам не нужно следовать addSubview:
с bringSubviewToFront:
, так как addSubview:
всегда добавляет вперед. Опять же из документации addSubview:
Добавляет вид к подпредставлениям получателя.
поэтому он отображается над своими братьями и сестрами.