popViewController 在 iOS 9 中不起作用
Posted
技术标签:
【中文标题】popViewController 在 iOS 9 中不起作用【英文标题】:popViewController not working in iOS 9 【发布时间】:2016-05-12 05:29:38 【问题描述】:我从 BaseViewController 继承了我的 ViewController,并使用情节提要 ID 推送了我的 SecondViewController。但是,当我尝试从第二个视图弹出视图到视图控制器时,它不起作用。 这是我的代码:
dispatch_async(dispatch_get_main_queue(), ^
[self showMesssgeonAlert:@"Success"];
[self hideProgress];
[self.navigationController popViewControllerAnimated:TRUE];
);
即使我尝试过:
NSArray *controllerArray = self.navigationController.viewControllers;
for (id controller in controllerArray)
if ([controller isKindOfClass:[ViewController class]])
[self.navigationController popViewControllerAnimated:TRUE];
但是,它在这两种情况下都不起作用。我该怎么办?请帮助我。
【问题讨论】:
您检查self.navigationController
是否不是nil
?
确保两个视图控制器在同一个 UINavigationController
堆栈上?
【参考方案1】:
确保您将控制器 SecondViewController 推送到 ViewController 上,如果您使用的是 segue,请检查显示类型,如(Push,Present Modally)。如果这是正确的,那么检查导航控制器对象,它应该有一个对象。
最后在两个视图控制器做加载方法中检查导航控制器的内存地址。它应该相同。
【讨论】:
【参考方案2】:您应该仔细检查:
两个视图控制器应该在同一个导航控制器堆栈上。
我猜,第二个视图控制器在不同的导航控制器上。
你是如何推送到第二个视图控制器的?
【讨论】:
如何检查视图控制器是否在不同的导航控制器上?并且我正在 pushViewController:animated: 在发生现有转换或演示时调用[self.navigationController viewControllers]
【参考方案3】:
尝试使用 appDelegates 导航控制器,尝试如下:
dispatch_async(dispatch_get_main_queue(), ^
[self showMesssgeonAlert:@"Success"];
[self hideProgress];
[((AppDelegate*)[[UIApplication sharedApplication]delegate]).navigationController popViewControllerAnimated:TRUE];
);
【讨论】:
【参考方案4】:拆分视图控制器可能会导致此问题,在我的情况下,我将其删除,popViewController
开始工作。
【讨论】:
以上是关于popViewController 在 iOS 9 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章
在 iOS 7 中打开 popviewcontroller 时出错
在 iOS 的 iphone 和 iPad 中显示 UI PopViewController 中心
iOS6横向应用程序只有一个控制器多向popViewController问题