(Это и вопрос, и ответ, поскольку для поиска реального ответа потребовалось немало усилий).
Симптом: viewWillAppear, viewDidAppear не вызывались в моем UIViewController.
Причина. Вставка a UINavigationController или UITabBarController (мой случай) в UIViewController как-то прерывает вызов этих методов.
Решение. Вызовите их вручную в UIViewController, который содержит вышеупомянутый UINavigationController/UITabBarController.
Например (если projectNavigationController является вашим UINavigationController):
-(void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
[projectNavigationController viewWillAppear:animated];
}
-(void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
[projectNavigationController viewWillDisappear:animated];
}
-(void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
[projectNavigationController viewDidAppear:animated];
}
-(void)viewDidDisappear:(BOOL)animated {
[super viewDidDisappear:animated];
[projectNavigationController viewDidDisappear:animated];
}
В моем случае у меня был внутренний UITabBarController, и я назвал методы соответствующим образом, и все было решено.
(Атрибуция по решению: http://davidebenini.it/2009/01/03/viewwillappear-not-being-called-inside-a-uinavigationcontroller/)