popViewControllerAnimated: не хочет анимировать
Я реализую своего рода каскадное меню.
В моей раскадровке у меня есть UINavigationController
которые имеют UIViewController
в качестве корневого контроллера представления (скажем, это MyViewController
). MyViewController
имеет идентификатор раскадровки: "Меню".
Поскольку этот контроллер является меню, он отображает tableView. При нажатии на ячейку запускается некоторый код, особенно:
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 ответ
Изменить: у вас происходит что-то смешное. Эта строка кода выглядит неправильно:
UINavigationController *menuNavigator = (UINavigationController*)[self.storyboard instantiateViewControllerWithIdentifier:@"Menu"];
Похоже, вы пытаетесь получить контроллер навигации, создавая экземпляр контроллера представления. Я не понимаю, зачем вам нужен такой навигатор. Вы можете просто получить навигационный контроллер с self.navigationController
,
Я делаю нечто подобное, и мой код выглядит следующим образом.
в didSelectRowAtIndexPath:
метод, я не создаю экземпляры через объект раскадровки, но вместо этого делаю:
DVSecondTableViewController *vc = [[DVSecondTableViewController alloc] init];
[self.navigationController pushViewController:vc animated:YES];
Чтобы вернуться назад, я просто использую кнопку "Назад", которую предоставляет контроллер навигации, поэтому я не могу вам помочь.