Выполнить код при раскрутке перехода с помощью кнопки «Назад»

Я хочу выполнить некоторый код, когда переход возвращается на один шаг. Например, когда выбрана кнопка «Назад», я хочу выполнить некоторый код.

Я не могу создать новое действие раскрутки с помощью кнопки «Назад», потому что в раскадровке нет кнопки «Назад». Есть ли способ вставить код, как только будет выбрана кнопка «Назад»?


person Community    schedule 16.02.2015    source источник
comment
Вы можете использовать viewWillDisappear, если вы можете вернуться только из этого конкретного представления (в противном случае он будет вызываться при переходе назад и вперед в иерархии представлений).   -  person AstroCB    schedule 16.02.2015
comment
Я не могу этого сделать, потому что я тоже буду идти вперед.   -  person    schedule 16.02.2015


Ответы (1)


Если вы хотите придерживаться кнопки «Назад» по умолчанию, один из способов сделать это — создать подкласс контроллера навигации и переопределить popViewControllerAnimated:, который вызывается при нажатии кнопки «Назад».

-(UIViewController *)popViewControllerAnimated:(BOOL)animated {
    UIViewController *vcToBePopped =[super popViewControllerAnimated:animated];
    id vc = self.viewControllers.lastObject; // this will be the controller you're going back to
    if ([vc isKindOfClass:IntendedViewController class]) { // replace IntendedViewController with the actual class name you care about
        [(IntendedViewController *)vc someMethod];
    }

    return vcToBePopped;
}
person rdelmar    schedule 16.02.2015
comment
Я не думаю, что есть метод под названием popViewController. Если вы пытаетесь сказать, что я должен добавить новый, как он должен называться? - person ; 16.02.2015
comment
@MikeRally, я не говорил, что есть метод popViewController, я сказал popViewControllerAnimated:, и такой метод есть. Вы смотрели ссылку на класс UINavigationController? - person rdelmar; 16.02.2015
comment
Интеллектуальный инспектор Xcodes не улавливает его. Я проверил документы, и, как вы сказали, они там были. Так что я не уверен, что происходит? - person ; 16.02.2015
comment
Ой. Я не создавал подкласс навигационного контроллера. Но когда я пробую свой класс в intendedViewController, он не поднимает класс? (И я импортировал его) - person ; 16.02.2015
comment
@MikeRally, я не знаю, почему он не нашел его, если вы его импортировали и написали правильно. - person rdelmar; 17.02.2015