У меня такая же проблема. Я попытался с viewDisDisappear, но у меня нет вызова функции :( (не знаю почему, может быть, потому что все мои VC является UITableViewController).
Предложение Алекса работает нормально, но не работает, если ваш контроллер навигации отображается на вкладке «Дополнительно». В этом случае все виртуальные контроллеры ваших контроллеров навигации имеют навигационный контроллер как UIMoreNavigationController, а не контроллер навигации, который вы вложили в подклассы, поэтому навигация не будет уведомлять вас, когда виртуальный контроллер собирается отключиться.
Наконец, я решил проблему с категорией UINavigationController, просто переписать - (UIViewController *) popViewControllerAnimated: (BOOL) animated
- (UIViewController *)popViewControllerAnimated:(BOOL)animated{
NSLog(@"UINavigationController(Magic)");
UIViewController *vc = self.topViewController;
if ([vc respondsToSelector:@selector(viewControllerWillBePopped)]) {
[vc performSelector:@selector(viewControllerWillBePopped)];
}
NSArray *vcs = self.viewControllers;
UIViewController *vcc = [vcs objectAtIndex:[vcs count] - 2];
[self popToViewController:vcc animated:YES];
return vcc;}
У меня хорошо работает: D