Захватить щелчок назад в навигационном контроллере - PullRequest
2 голосов
/ 08 января 2010

В приложении контроллера навигации, если вы назначили заголовок корневому контроллеру, в представлении с нажатием будет кнопка «Назад» с этим заголовком в левом верхнем углу его панели навигации. Это автоматически. Как я могу выполнить код, основанный на событии нажатия этой кнопки назад?

1 Ответ

4 голосов
/ 08 января 2010

Реализация UINavigationControllerDelegate

@protocol UINavigationControllerDelegate <NSObject>

@optional

// Called when the navigation controller shows a new top view controller via a push, pop or setting of the view controller stack.
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated;
- (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated;

@end

Edit: пример простой двухуровневой иерархии, но легко может быть обновлен до большего)

Сделайте ваш корневой контроллер представления делегатом UINavigationController (например, в viewDidLoad), а затем реализуйте его следующим образом:

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
    if (viewController == self )
    {
        if (lastView == theOtherView)
        {
            // Pop from other view to root view
        }
    }
    else if (viewController == theOtherView)
    {
        // push to other view
    }
    lastView = viewController;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...