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]
答案 0 :(得分:1)
根据Apple指南UISplitViewController
应该是根视图控制器i。即它不能作为子控制器插入UITabBarController
:
拆分视图控制器必须始终是您所有接口的根 创建。换句话说,您必须始终从a安装视图 UISplitViewController对象作为应用程序的根视图 窗口。
从“View Controller Catalog for iOS”用户指南