在iOS 8上打破的self.presentingViewController?

时间:2014-10-16 13:47:47

标签: ios objective-c ios7 uiviewcontroller ios8

我遇到了一些非常奇怪的事情:

创建一个非常基本的单视图项目,并向故事板添加第二个视图控制器,以及从第一个到第二个的模态segue。从视图控制器启动segue并使用performSegueWithIdentifier:以编程方式触发它。

在模态显示的视图控制器的viewDidLoad中,添加此日志:

NSLog(@"%@", self.presentingViewController);

现在在 iOS 7 上运行应用程序,你应该得到这样的日志:

<ViewController: 0x7fa8e9530080>

这只是app的初始视图控制器的参考,它提供了模态视图控制器。

现在在 iOS 8 上运行完全相同的,您将获得:

(null)

这里发生了什么?这是一个已知的问题吗?当然,我期望在两个系统上都有完全相同的行为。

1 个答案:

答案 0 :(得分:3)

谢谢......作为答案被强制执行。

viewDidLoad应该用于初始化,在这个阶段,不能保证接收者的控制器视图层次结构已经放在导航树中。如果这是你的意图,你应该覆盖viewWillAppear或viewDidAppear。虽然它适用于早期版本,但文档明确指出它应该用于其他初始化。听起来好像在iOS 8中,接收器的初始化正在进行之前