З документації Apple в UIViewController.h:
"Ці чотири способи можна використовувати у зворотній формі виклику контролера перегляду, щоб визначити, чи він подається, відхиляється чи додається чи видаляється як дочірній контролер перегляду. Наприклад, контролер перегляду може перевірити, чи він зникає, оскільки він був відхилений або вискакував, запитуючи себе у своєму viewWillDisappear: метод, перевіряючи вираз ([self isBeingDismissed] || [self isMovingFromParentViewController]). "
- (BOOL)isBeingPresented NS_AVAILABLE_IOS(5_0);
- (BOOL)isBeingDismissed NS_AVAILABLE_IOS(5_0);
- (BOOL)isMovingToParentViewController NS_AVAILABLE_IOS(5_0);
- (BOOL)isMovingFromParentViewController NS_AVAILABLE_IOS(5_0);
Так, так, єдиний документально підтверджений спосіб це наступний:
- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
if ([self isBeingDismissed] || [self isMovingFromParentViewController]) {
}
}
Версія Swift 3:
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
if self.isBeingDismissed || self.isMovingFromParentViewController {
}
}