Мне кажется, я нашел «чистый» способ сделать это:
Сначала установите контроллер представления как соответствующий протоколу UINavigationControllerDelegate
@interface MyViewController () <UINavigationControllerDelegate>
Затем определите его как делегат
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
// Set this View Controller as the navigation controller delegate
self.navigationController.delegate = self;
}
Наконец, используйте этот метод из протокола UINavigationControllerDelegate:
#pragma mark - Navigation controller delegate
- (void)willMoveToParentViewController:(UIViewController *)parent
{
// If there is no parent, then it means that the view controller has been removed from the stack, which happens when the back button has been pressed
if (!parent) {
NSLog(@"Back button pressed");
// it can be useful to store this into a BOOL property
self.backButtonPressed = YES;
}
}