0

Я реализую своеобразное каскадное меню.popViewControllerAnimated: не хочет анимировать

В моей раскадровке у меня есть UINavigationController, у которых есть UIViewController в качестве контроллера корневого вида (скажем, это MyViewController). MyViewController имеет идентификатор раскадровки: «Меню».
Поскольку этот контроллер представляет собой меню, он отображает таблицуView. При нажатии на ячейку запускается код, особенно:

UINavigationController *menuNavigator = (UINavigationController*)[self.storyboard instantiateViewControllerWithIdentifier:@"Menu"]; 
MyViewController *newMenu = (MyViewController*)menuNavigator.topViewController; 
//Some configurations of newMenu 
[self.navigationController pushViewController:newMenu animated:YES]; 

С этого момента все работает нормально.

В подменю последняя ячейка является «задней» ячейкой. Когда пользователи потрогать, он запускает код:

[self.navigationController popViewControllerAnimated:YES]; 

я правильно вернуться в предыдущее меню, но без анимации.

Я также попытался:

[self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:0] animated:YES]; 
[self.navigationController popToRootViewControllerAnimated:YES]; 

Но я до сих пор нет никакой анимации.

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

Что случилось с моим кодом?

Редактировать
Я использую Autolayout и ARC;

+1

Длинный снимок: Возможно, вы пропустили вызов '[super ...]' в любом из методов 'viewDidLoad',' viewWillDisappear', ...? – plu

+0

Я только переписываю 'viewDidLoad' и' viewDidAppear: '. Второй отсутствовал вызов 'super', но даже с этим он все еще не оживлял. – zbMax

+0

убедитесь, что вы вызываете [super viewDidAppear] и [super viewDidLoad]? – jailani

ответ

0

Редактировать: у вас есть что-то смешное. Эта строка кода выглядит неправильно:

UINavigationController *menuNavigator = (UINavigationController*)[self.storyboard instantiateViewControllerWithIdentifier:@"Menu"]; 

Похоже, вы пытаетесь получить контроллер навигации, создав экземпляр контроллера. Я не понимаю, зачем вам нужен такой навигатор. Вы можете просто получить навигационный контроллер с self.navigationController.

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

В методе didSelectRowAtIndexPath: я не экземпляр с помощью объекта раскадровки, но вместо того, чтобы сделать:

DVSecondTableViewController *vc = [[DVSecondTableViewController alloc] init]; 
    [self.navigationController pushViewController:vc animated:YES]; 

Чтобы вернуться назад, я просто использовать кнопку Назад, которая обеспечивает контроллер навигации, так что я не могу помогите вам там.

+0

Я создаю свое представление программно без раскадровки. (Кстати, я не понимаю, почему вы вызываете 'initWithNibName: bundle:' с аргументами nil вместо 'init' ...) Моя проблема все тот же. Могут ли быть ошибки автоопределения? – zbMax

+0

Вы правы, это не нужно делать так, отредактировано. –

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

  • Нет связанных вопросов^_^