我遇到了一些非常奇怪的事情:
创建一个非常基本的单视图项目,并向故事板添加第二个视图控制器,以及从第一个到第二个的模态segue。从视图控制器启动segue并使用performSegueWithIdentifier:
以编程方式触发它。
在模态显示的视图控制器的viewDidLoad
中,添加此日志:
NSLog(@"%@", self.presentingViewController);
现在在 iOS 7 上运行应用程序,你应该得到这样的日志:
<ViewController: 0x7fa8e9530080>
这只是app的初始视图控制器的参考,它提供了模态视图控制器。
现在在 iOS 8 上运行完全相同的,您将获得:
(null)
这里发生了什么?这是一个已知的问题吗?当然,我期望在两个系统上都有完全相同的行为。
答案 0 :(得分:3)
谢谢......作为答案被强制执行。
viewDidLoad应该用于初始化,在这个阶段,不能保证接收者的控制器视图层次结构已经放在导航树中。如果这是你的意图,你应该覆盖viewWillAppear或viewDidAppear。虽然它适用于早期版本,但文档明确指出它应该用于其他初始化。听起来好像在iOS 8中,接收器的初始化正在进行之前