UIViewController: вызывается viewWillAppear, не viewDidAppear

В подклассе UIViewController у меня есть следующие методы:

-(void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    // do something
    myTextField.text = @"Default";
}

- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    // do something
    [myTextField selectAll:self];
    [myTextField becomeFirstResponder];
}

- (void)viewDidLoad {
    [super viewDidLoad];    
    // do something
    myTextField.delegate = self;
}

NIB был создан с помощью Interface Builder. Соответствующий объект контроллера представления проталкивается контроллером навигации через pushViewController.

Предполагаемое поведение - показать текстовую запись по умолчанию в текстовом поле, выделить весь текст и установить текстовое поле в качестве первого респондента.[Edit: я заметил, что выбор всех и для создания первого респондента не имеет смысла, так как выбор исчезнет; Тем не менее, мне интересно, почему методы ведут себя так, как описано ниже.]

Однако , пока вызываются методы viewDidLoad и viewWillAppear, метод viewDidAppear не вызывается. Кто-нибудь может мне сказать, почему? Большинство вопросов, которые я нашел в Интернете и здесь касаются как viewWillAppear, так и viewDidAppear, не работают; Я также понял, что в подпредставлениях или программно созданных представлениях эти методы не вызываются; но это не относится к случаю, и мне также интересно, почему один из этих методов "жизненного цикла" вызывается, а другой нет.

Есть идеи? Спасибо!

16
задан Jonathan Sterling 3 December 2010 в 17:20
поделиться