作者:别被风景迷了眼 | 来源:互联网 | 2023-05-29 10:05
我使用Xcode 6的Master Detail Application
模板创建了一个新的iOS 8项目.我没有以任何方式更改代码.
在设置断点DetailViewController.m
并检查self.splitViewController
属性时,如下面的屏幕截图所示,它将返回nil
.
这是为什么?
根据Apple UISplitViewController 文档,self.splitViewController
应该返回最近的SplitViewController
:
如果接收器或其祖先之一是拆分视图控制器的子级,则此属性包含拥有的拆分视图控制器.如果视图控制器未嵌入拆分视图控制器中,则此属性为nil.
Rory McKinne..
7
不知道你是否想过这个问题,但我只是遇到了这个问题并发现了什么错误,看起来和你的情况类似.
直到viewDidLoad之后才会配置splitViewController属性.如果意外使用它的代码在viewDidLoad之前被触发,那么该值将为nil.
我在你的代码示例中注意到configureView是从setDetailItem调用的.如果这是从prepareForSegue调用的,那么viewDidLoad将不会发生,导致configureView中的splitViewController属性值为nil.所以代码必须在[super viewDidLoad]完成之后运行.
1> Rory McKinne..:
不知道你是否想过这个问题,但我只是遇到了这个问题并发现了什么错误,看起来和你的情况类似.
直到viewDidLoad之后才会配置splitViewController属性.如果意外使用它的代码在viewDidLoad之前被触发,那么该值将为nil.
我在你的代码示例中注意到configureView是从setDetailItem调用的.如果这是从prepareForSegue调用的,那么viewDidLoad将不会发生,导致configureView中的splitViewController属性值为nil.所以代码必须在[super viewDidLoad]完成之后运行.