1

Я использую этот код, чтобы показать UIViewController:Невозможно откатить ViewController

CATransition *transition = [CATransition animation]; 
transition.duration = 0.f; 
transition.type = kCATransitionFade; 
[self.navigationController.view.layer addAnimation:transition forKey:nil]; 
[self.navigationController pushViewController:newVC animated:NO]; 

и ViewController отображается правильно. Затем я использую этот код для подготовки анимации (Используется для анимации поп):

CATransition *transition = [CATransition animation]; 
transition.duration = 0.f; 
transition.type = kCATransitionFade; 
[self.navigationController.view.layer addAnimation:transition forKey:nil]; 

Однако ни одна из этих линий будет совать его:

[self.navigationController popViewControllerAnimated:NO]; 
[self.navigationController popToRootViewControllerAnimated:NO]; 

Что может быть проблема? Журналирование навигации стека отображается как правильно UIViewControllers:

NSLog(@"%@", self.navigationController.viewControllers); 
+0

с вне анимации один раз попробовать –

+0

@ Anbu.Karthik же результат без анимации – Erik

+0

ya, ok проверить, как ваши контроллеры просмотров добавляются в стек навигации или нет. –

ответ

0

Хорошо, так что это неловко.

Я пропустил push-вызов в viewDidAppear:animated:, и я забыл реализовать чек, если мы уже нажали. Поэтому, когда я вытащил новый UIViewController, viewDidAppear:animated снова нажал новый VC. Я также установил его на animate:NO и удалил пользовательский переход, в результате чего поп и повторное нажатие произойдет в основном мгновенно.

Я обнаружил это, поставив точку останова в поп-сообщении и заметил, что симулятор отобразил корень UIViewController на долю секунды.

2

Это ясно,

если вы не нажимной yourViewcontroller, вы не можете поп yourViewController

если ниже линии отсутствующий в вашем коде

[self.navigationController pushViewController:newVC animated:NO]; 

Ни один из обоих вариантов ниже будет выполнять ute

[self.navigationController popViewControllerAnimated:NO]; 
[self.navigationController popToRootViewControllerAnimated:NO]; 
+0

Странно, я использую эту строку '[self.navigationController pushViewController: newVC animated: NO] ; ' Чтобы нажать мой viewController – Erik

+0

В вас второй вариант фрагмента кода вы didi не использовали '[self.navigationController pushViewController: newVC animated: NO]; '. это причина, по которой вы не можете поп – Jamil

+0

О, этот код не при нажатии - я добавил его до вызова '[self.navigationController popViewControllerAnimated: NO];' для анимации поп. Не знаю, правильно ли это, но я удалил его только сейчас. – Erik

0

установить ваши navigationItems влево/вправо/название на ноль, прежде чем

[self.navigationController popViewControllerAnimated:NO]; 

Я видел некоторые вещи, похоже сегодня, где вид не обновлялись после поп