(Это и вопрос, и ответ, поскольку для поиска реального ответа потребовалось немало усилий).
Симптом: 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/)