Если вы подклассируете свой навигационный контроллер, вы можете реализовать метод popViewControllerAnimated: и бросить туда isKindOfClass: check, чтобы определить, выталкивается ли контроллер представления, который вы ищете. Например:
- (UIViewController *)popViewControllerAnimated:(BOOL)animated
{
//Reference current controller being displayed
UIViewController *currentController = [self.viewControllers lastObject];
//Check class
if ([currentController isKindOfClass:[MyDesiredController class]]) {
NSLog(@"Popping Desired Controller, Do Stuff Here");
}
return [super popViewControllerAnimated:animated];
}
Однако это не отменяет фактическое появление контроллера представления (возврат nil остановит появление контроллера, но все равно приведет к тому, что панель навигации вытолкнет его информацию, а возврат NO методу shouldPop: делегат панели навигации все равно вытолкнет независимо от этого. Я слышал, что это происходит только при использовании навигационного контроллера, но я не проверял это).
Однако в вашей ситуации, поскольку вы хотите вернуть два контроллера представления обратно, вы можете удалить второй последний контроллер представления из свойства viewcontrollers навигационного контроллера, преобразовав контроллеры представления в nsmutablearray, удалив контроллер, а затем преобразовав этот nsmutablearray обратно в массив и установить его как свойство viewcontrollers навигационного контроллера. Я не проверял это, но решил поделиться идеей.
person
Adam Eisfeld
schedule
30.01.2013