2016-07-26 1 views
-1

У меня есть четыре ViewController позволяет сказать ABCD.Перейдите к Specific UIViewController при нажатии кнопки назад нажимается

переходит к В, В может переходит к C и D обоих.

И C может перейти к D

И D может перейти к C

Теперь я хочу, если я нажимаю кнопку назад в CD он возвращается до B всегда.

Я навигация с помощью Саги так:

[self performSegueWithIdentifier:@"hourlyToPeriodic" sender:self]; 

Пожалуйста, спросите, если что-либо ООН ясно.

+1

Вы можете использовать 'viewControllers' свойство' UINavigationController' найти ViewController B и 'popToViewController: анимированные: 'идти к нему. Тогда можно было бы подклассифицировать навигационный контроллер и проверить, когда это C или D, который просит поп, перейдите в B вместо C или D в зависимости от иерархии, если один из них был предыдущим. – Larme

ответ

1

После толкнул C или D контроллеров отображения вы можете

модифицируют навигационный стек:

NSMutableArray *navigationStack = [D.navigationController.viewControllers mutableCopy]; 

или

NSMutableArray *navigationStack = [C.navigationController.viewControllers mutableCopy]; 

Удалите не вид необходимости контроллеры из улица Ack

[navigationStack removeObject:D]; 

или

[navigationStack removeObject:C]; 

и установить новый навигационный стек

[D.navigationController setViewControllers:navigationStack animated:NO]; 

или

[C.navigationController setViewControllers:navigationStack animated:NO]; 

И если вы Wi LL нажмите кнопку назад вы вернетесь к B

Или использовать путь как @Larme ответил

+0

NSMutableArray * навигацияStack = [self.navigationController.viewControllers mutableCopy]; [навигацияStack removeObject: self]; [self.navigationController setViewControllers: navigationStack animated: NO]; – Yawar

+0

написал (а) это после выполнения строкиSizeWithIdentifier решена моя проблема – Yawar

Смежные вопросы