В моем приложении у меня есть BaseViewController (NavigationController) как корневой контроллер. Я обычно использую следующий код для навигации:
[self.navigationController pushViewController:childController animated:YES];
Но на одном из действий я хочу, чтобы следующее представление анимировало кнопку к вершине, таким образом, я использую:
[self presentModalViewController:childController animated:YES];
Все работает до сих пор. В модальном представлении я затем хочу продвинуть другой контроллер, но это, кажется, не работает. Я попробовал следующее:
// self.navigationController is null, so this doesn't work
[self.navigationController pushViewController:childController animated:YES];
// self.parentViewController is the BaseViewController and not null, but this
// won't work either. This also generates a warning "UIViewController' may not
// respond to '-pushViewController:animated:"
[self.parentViewController pushViewController:childController animated:YES];
В обоих случаях ничего не происходит. pushViewController отключен, в то время как модальное представление все еще показывает? Если так, есть ли иначе, я могу:
?
Если вы представляете ModelViewController, вам необходимо отклонить его, прежде чем вы сможете вызывать методы контроллера навигации, в противном случае вам нужно поместить этот контроллер представления в стек навигации, чтобы чтобы поставить другой контроллер представления поверх него.
Это может быть полезно: Core Animation - Sheet-like Window Sliding
Если вы используете его в сочетании с [self.navigationController pushViewController:childController animated:NO];
чтобы отключить нативную анимацию, она может произвести эффект, который вы ищете.
Не забудьте отменить операцию при выключив childController из стека навигации.