为什么self.splitViewController == nil?

Ale*_*exR 2 objective-c uiviewcontroller uisplitviewcontroller ios ios8

我使用Xcode 6的Master Detail Application模板创建了一个新的iOS 8项目.我没有以任何方式更改代码.

在设置断点DetailViewController.m并检查self.splitViewController属性时,如下面的屏幕截图所示,它将返回nil.

在此输入图像描述

这是为什么?

根据Apple UISplitViewController 文档,self.splitViewController应该返回最近的SplitViewController:

如果接收器或其祖先之一是拆分视图控制器的子级,则此属性包含拥有的拆分视图控制器.如果视图控制器未嵌入拆分视图控制器中,则此属性为nil.

Ror*_*nel 7

不知道你是否想过这个问题,但我只是遇到了这个问题并发现了什么错误,看起来和你的情况类似.

直到viewDidLoad之后才会配置splitViewController属性.如果意外使用它的代码在viewDidLoad之前被触发,那么该值将为nil.

我在你的代码示例中注意到configureView是从setDetailItem调用的.如果这是从prepareForSegue调用的,那么viewDidLoad将不会发生,导致configureView中的splitViewController属性值为nil.所以代码必须在[super viewDidLoad]完成之后运行.