我有这个导航堆栈
RootVC ---> VC1->(演示)-> ModalVC
而且我有VC2(不在导航堆栈中)。
在介绍ModalVC时,我想单击ModalVC中的按钮以关闭ModalVC,然后单击VC1之后将VC2推入导航堆栈。它看起来应该像这样:
RootVC ---> VC1 ---> VC2
我尝试了很多方法来实现它,但是当我返回到RootVC时,仅推送事件触发。
我试图与代表们做到这一点:
在ModalVC上单击:
[self dismissViewControllerAnimated:YES completion:^{
if ([self.delegate respondsToSelector:@selector(dismissAndPush:)]) {
[self.delegate performSelector:@selector(dismissAndPush:) withObject:VC2];
}
}];
在VC1中:
- (void)dismissAndPush:(UIViewController *)vc {
[self.navigationController pushViewController:vc animated:NO];
}
请帮助了解这种行为。我的错误在哪里?
最佳答案
发生了其他错误。如果我没看错:在解散显示的视图控制器之前,某些动画正在阻止导航堆栈中的动画。我用两种方法解决了这个问题:
1)在解雇前删除或设置正确的动画
2)在导航控制器中使用setViewControllers(我选择了它)
- (void)dismissAndPush:(UIViewController *)vc {
[self dismissViewControllerAnimated:NO completion:^{
NSMutableArray *mutableControllers = [NSMutableArray arrayWithArray:self.navigationController.viewControllers];
NSArray *controllers = [mutableControllers arrayByAddingObject:vc];
[self.navigationController setViewControllers:controllers animated:NO];
}];
}