Можливо, ці відповіді не відповідають вашому поясненню, але назві запитання. Це корисно, коли ви намагаєтесь знати, коли ви натиснули кнопку "Назад" на UINavigationBar
.
У цьому випадку ви можете використовувати UINavigationBarDelegate
протокол і реалізувати один із таких методів:
- (BOOL)navigationBar:(UINavigationBar *)navigationBar shouldPopItem:(UINavigationItem *)item;
- (void)navigationBar:(UINavigationBar *)navigationBar didPopItem:(UINavigationItem *)item;
Коли didPopItem
метод викликається, це тому, що ви або натиснули кнопку "Назад", або використовували [UINavigationBar popNavigationItemAnimated:]
метод, і панель навігації видала елемент.
Тепер, якщо ви хочете знати, яка дія спричинила didPopItem
метод, ви можете використовувати прапор.
При такому підході мені не потрібно вручну додавати елемент кнопки лівої панелі із зображенням стрілки, щоб зробити його схожим на кнопку назад у iOS, і мати можливість встановити мою спеціальну ціль / дію.
Подивимось приклад:
У мене є контролер перегляду, який має контролер перегляду сторінки та спеціальний перегляд індикатора сторінки. Я також використовую спеціальну панель UINavigationBar, щоб відобразити заголовок, щоб знати, на якій сторінці я, і кнопку "Назад", щоб повернутися на попередню сторінку. І я також можу провести пальцем до попередньої / наступної сторінки на контролері сторінок.
#pragma mark - UIPageViewController Delegate Methods
- (void)pageViewController:(UIPageViewController *)pageViewController didFinishAnimating:(BOOL)finished previousViewControllers:(NSArray *)previousViewControllers transitionCompleted:(BOOL)completed {
if( completed ) {
if( currentIndex > lastIndex ) {
UINavigationItem *navigationItem = [[UINavigationItem alloc] initWithTitle:@"Some page title"];
[[_someViewController navigationBar] pushNavigationItem:navigationItem animated:YES];
[[_someViewController pageControl] setCurrentPage:currentIndex];
} else {
_autoPop = YES;
[[_someViewController navigationBar] popNavigationItemAnimated:YES];
[[_someViewController pageControl] setCurrentPage:currentIndex];
}
}
}
Тоді я реалізую методи делегування UINavigationBar:
#pragma mark - UINavigationBar Delegate Methods
- (BOOL)navigationBar:(UINavigationBar *)navigationBar shouldPopItem:(UINavigationItem *)item {
if( !_autoPop ) {
} else {
}
_autoPop = NO;
return YES;
}
У цьому випадку я використовував, shouldPopItem
оскільки поп анімований, і я хотів негайно обробити кнопку "Назад" і не чекати, поки перехід закінчиться.