如何在 iOS 8 中关闭两个 UIViewControllers?

Posted

技术标签:

【中文标题】如何在 iOS 8 中关闭两个 UIViewControllers?【英文标题】:How to dismiss two UIViewControllers in iOS 8? 【发布时间】:2014-12-15 10:16:20 【问题描述】:

我正在使用 Objective C 开发 iPhone 应用程序。因为我需要一次关闭两个 UIViewController,所以我使用以下代码:

[self.presentingViewController.presentingViewController dismissViewControllerAnimated:YES completion:nil];

此代码在 ios6 和 iOS7 中运行良好,但在 iOS8 中无法运行。我已经使用断点进行了检查,我的 ViewController viewDidLoad 和 viewWillAppear 方法正在调用,但我的视图根本没有加载,所以作为输出,我得到的是空白屏幕。谁能帮我,对于iOS8,我该如何解决这个问题,我是否需要使用presentingViewController而不是presentingViewController?

【问题讨论】:

如果有多个 vc 呈现,我会在你想解散的 VC 中添加一个通知观察者并发送通知要求它离开。 感谢@Horst 的回复。但根据我的要求,需要关闭两个 ViewController。 然后向两个 VC 添加观察者 【参考方案1】:

Swift 代码

@IBAction func goBack(sender: AnyObject) 
    var tmpController :UIViewController! = self.presentingViewController;

    self.dismissViewControllerAnimated(false, completion: ()->Void in
        println("done");
         tmpController.dismissViewControllerAnimated(false, completion: nil);
    );

Sample project


Objective-c 代码
- (IBAction)goBack:(id)sender 

    UIViewController *trmpVC = self.presentingViewController;

    [self dismissViewControllerAnimated:NO completion:^
        [trmpVC dismissViewControllerAnimated:NO completion:nil];
    ];

Sample project

【讨论】:

@JageenThansk 为您解答,我正在使用目标 c 对班次知之甚少。如果可能,请提供目标 C 中的解决方案。 @AnandGautam 已编辑并将上传示例项目。 @AnandGautam 在您的环境中也有效吗?,如果没有,请查看示例项目 让我们continue this discussion in chat.【参考方案2】:

尝试以下操作:

NSArray *arrVC = [self.navigationController viewControllers];
[self.navigationController popToViewController:[arrVC objectAtIndex:arrVC.count-2] animated:YES];

希望这会有所帮助。

【讨论】:

它到底是做什么的?你能详细说明一下吗? 是的,确定.. 由于索引问题,您的代码正在崩溃。实际上应该是 NSInteger currentIndex = [self.navigationController.viewControllers indexOfObject:self]; if( currentIndex-2 >= 0 ) [self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:currentIndex-2] animated:YES]; no no.. 实际上我已经尝试过上述方法,但它甚至根本没有解雇。 我认为你应该采用委托方法,弹出视图控制器发送消息以委托再次弹出视图控制器。

以上是关于如何在 iOS 8 中关闭两个 UIViewControllers?的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS 8 中关闭模式视图控制器时 UI 会失真

如何在自定义 iOS 应用扩展中关闭横向?

如何在 socket.io 1.0 中关闭服务器?

如何在我的网站中关闭自动睡眠 ios

如何在移动 android/iOs(本机应用程序)中关闭 webview

如何使用 Cordova 6 在 iOS 中关闭“需要全屏”选项?