很抱歉,但类似的问题都没有提供可行的解决方案。
新的单一视图项目。 故事板操作:
问题陈述:如何让模态VC3的按钮立即关闭两者 VC3和VC2,将我带回VC1?
这不起作用 - 只带我去VC2:
- (IBAction)dismissPressed:(id)sender {
UINavigationController *myNavController = [self navigationController];
[self dismissViewControllerAnimated:NO completion:^{
[myNavController popToViewController:[myNavController.viewControllers objectAtIndex:1] animated:NO];
}];
}
非常感谢!
答案 0 :(得分:0)
使用 self.presentingViewController 找出“以前的视图控制器”。 您无需通过属性传递上一个视图控制器。
- (IBAction)dismissPressed:(id)sender {
UIViewController *presentingViewController = self.presentingViewController;
[self dismissViewControllerAnimated:NO completion:^{
[self.presentingViewController popViewControllerAnimated:TES];
}];
}
答案 1 :(得分:0)
好的,这是解决方案:
如果你可以限制自己使用ios6 +,正确的答案就是让按钮成为展开segue ,如What are Unwind segues for and how do you use them?
中所述但如果你像我一样并且必须遵守ios5,解决方案就是这样:
在调用模态segue 的VC中声明一个这样的委托:
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"segueModalVC"]) {
ModalVC *vc = [segue destinationViewController];
vc.prevVC = self;
}
}
您必须#import目标模式VC的标头。
现在在模态VC中添加一个属性来保存前面的VC,如下所示:
@property (weak, nonatomic) UIViewController *prevVC;
现在按钮弹出两个VC的操作应如下所示:
- (IBAction)pressedMainMenu:(id)sender {
[self dismissViewControllerAnimated:YES completion:nil];
[[self.prevVC navigationController] popViewControllerAnimated:NO];
}
[已编辑显示完美版本的最终版本,可以将动画从VC3翻转回VC1。花了我几个小时来完成这个,但现在你可以免费享受它:)]
恕我直言,模态VC没有'本地'方法来访问其前面的VC是一个设计错误。
答案 2 :(得分:0)
尝试使用popToRootViewControllerAnimated方法返回VC1。
- (IBAction)dismissPressed:(id)sender {
UINavigationController *myNavController = [self navigationController];
[self dismissViewControllerAnimated:NO completion:^{
[myNavController popToRootViewControllerAnimated: NO];
}];
}