为什么self.splitViewController突然在viewDidLoad中没有?

时间:2013-06-09 20:15:26

标签: ios objective-c cocoa-touch uisplitviewcontroller

我有一个使用标准UISplitViewController的iOS通用应用。

几乎从我开始处理应用程序以来,我已经使用以下代码链接左侧的主视图控制器和右侧的详细视图控制器:

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.detailViewController = (CustomViewController *)[[self.splitViewController.viewControllers lastObject] topViewController];
}

在最近的一些更改之后,最后一行停止了工作,从而打破了一些功能。此行为的原因是此时self.splitViewControllernil。将最后一行移至viewWillAppear:可以解决问题,但恕我直言,这不是完全正确的选择。

我所做的更改与此无关,我没有对控制器层次结构或我使用的故事板进行更改。所以我无法解释这种行为的起源。任何提示都将不胜感激。

1 个答案:

答案 0 :(得分:1)

您可以为您的splitViewController实例创建一个动态访问器,以便它永远不会返回nil,或者当然检查viewDidLoad中是否为nil。

e.g。

- (CustomViewController *)splitViewController 
{
    if (splitViewController == nil) {
      splitViewController = [[CustomViewController alloc] init]; 
    }
    return splitViewController; 
}