UITabBarController内的UISplitViewController在尝试检查[splitViewController viewControllers]时发出错误

时间:2014-01-15 13:15:54

标签: ios objective-c ipad uitabbarcontroller uisplitviewcontroller

if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {
    UISplitViewController *splitViewController = (UISplitViewController *)[[tabBarController viewControllers] firstObject];
    UINavigationController *navigationController = [[splitViewController viewControllers] lastObject];
    splitViewController.delegate = (id)navigationController.topViewController;
}

这是我目前检查设备是否为iPad的代码。如果是,则应设置tabbarcontroller的第一个对象的最后一个对象的唯一视图控制器。故事板如下:

Tabbarcontroller[0]>Splitviewcontroller[1]>Navigationcontroller[0]>delegate(?)

我仍然不知道委托是做什么的,但是在检查苹果的分割视图控制器的模板代码时,我认为它使用委托来通知详细视图控制器更新内容。我正在崩溃的行是[splitViewController viewControllers]

1 个答案:

答案 0 :(得分:1)

根据Apple指南UISplitViewController应该是根视图控制器i。即它不能作为子控制器插入UITabBarController

  

拆分视图控制器必须始终是您所有接口的根   创建。换句话说,您必须始终从a安装视图   UISplitViewController对象作为应用程序的根视图   窗口。

从“View Controller Catalog for iOS”用户指南