(This is both question and answer since it took quite a bit of digging to find the real answer.)
Symptom: viewWillAppear
, viewDidAppear
were not being called in my UIViewController.
Cause: Embedding a UINavigationController
or UITabBarController
(my case) in a UIViewController
somehow interrupts with the calling of these methods.
Solution: Call them manually in the UIViewController
that contains the aforementioned UINavigationController
/ UITabBarController
.
For example (assuming projectNavigationController
is your 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]; }
In my case I had an inner UITabBarController
and I called the methods accordingly and all was solved.
(Attribution on the solution: http://davidebenini.it/2009/01/03/viewwillappear-not-being-called-inside-a-uinavigationcontroller/)