viewWillAppear следует вызывать, если вы используете UINavigationController.
Вы уверены, что правильно добавили его в иерархию представлений?
Вы проверяли, вызывается ли viewWillDisappear, когда он выходит за экран?
Вы пробовали viewDidAppear просто чтобы убедиться?
Правильно ли вы написали название метода?
Добавить:
Добавлен ли экземпляр UINavigationController непосредственно в экземпляр UIWindow?
Методы делегатов, такие как viewWillappear, отправляются из UIApplication (я считаю). UIApplication только «знает» о viewControllers, чьи представления либо:
Добавлено непосредственно в UIWindow.
Добавлено в
UINavigationController / UITabBarController
который добавляется непосредственно в UIWindow
(или их цепочка, которая ведет к UIWindow).