Если ваш контроллер представления является дочерним по отношению к другому контроллеру представления (т.е. это UINavigationController внутри UIViewController, или наоборот и т. Д.), Дочерние методы viewDidAppear, viewWillAppear и т. Д. Не будут вызываться. Решение состоит в том, чтобы сделать родительский вызов таким, как:
-(void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
[child viewWillAppear:animated];
}
Я знаю, что это происходит через iOS 4.3. В iOS 5 есть новый набор методов, специально предназначенных для обработки этих случаев: Реализация контроллера представления контейнера