Посмотреть методы загрузки не стреляя - PullRequest
3 голосов
/ 22 марта 2010

Я загружаю вид, подобный этому:

if(commentSubmissionView == nil){
    commentSubmissionView = [[CommentSubmissionController alloc] initWithNibName:@"CommentSubmissionView" bundle:nil];  
}
[self.view addSubview:commentSubmissionView.view];

viewDidLoad и viewWillAppear в commentSubmissionView не запускаются. Есть ли что-то еще, что мне нужно сделать?

Ответы [ 3 ]

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

Документация для viewWillAppear: не совсем понятна, но посмотрите, что там написано:

Этот метод вызывается в ответ на вид добавляется либо напрямую, либо косвенно к окну. Вы добавляете взгляды в окно, используя addSubview: метод, чтобы добавить их в иерархия представления окна. Вы также можете добавить представление косвенно несколькими способами, в том числе, толкая его на стек навигации или представив его модально (используя presentModalViewController: анимированные: метод). Этот метод вызывается раньше вид фактически добавляется к окно и перед любой анимацией сконфигурировано.

Методы viewDidAppear: и viewWillAppear: будут вызываться, только если вы:

  1. Добавление их в окно (добавление в представление не считается - это должно быть окно)
  2. Использование pushViewController: или presentModalViewController:animated: или переключение вкладок в контроллере вкладок или любая другая ситуация, когда предоставленный Apple контроллер представления добавляет контроллер представления и его представление для вас.

В ситуации, когда вы добавляете представление в другое представление, вы должны сами вызывать viewWillAppear: и viewDidAppear: на контроллере представления, иначе они не произойдут.

Я не знаю, почему viewDidLoad изначально не вызывался для вас. Он всегда будет вызываться после loadView, когда средство доступа к свойству view вызывается на контроллере впервые, если не происходит ошибка. Возможно, загрузка просмотра не удалась (вам нужно проверить журнал консоли).

Вам не нужно следовать addSubview: с bringSubviewToFront:, так как addSubview: всегда добавляет вперед. Опять же из документации addSubview:

Добавляет вид к подпредставлениям получателя. поэтому он отображается над своими братьями и сестрами.

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

Если вы используете addSubview:, вам также нужно использовать bringSubviewToFront: следующим образом:

if(commentSubmissionView == nil){
    commentSubmissionView = [[CommentSubmissionController alloc] initWithNibName:@"CommentSubmissionView" bundle:nil];  
}
[self.view addSubview:commentSubmissionView.view];
[self.view bringSubviewToFront:commentSubmissionView.view];
0 голосов
/ 06 мая 2013

viewDidLoad и viewWillAppear вызываются на подклассах UIViewController, commentSubmissionView выглядит как подкласс UIView.Как упоминал Мэтт, вы, вероятно, захотите нажать / представить контроллер представления вместо простого добавления подпредставления.

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