为什么UISplitViewController无法成为UIWindow的rootViewController属性?
在iPhone应用程序中创建初始视图时,可以将主UIWindow的IBOutlet rootViewController属性设置为默认视图控制器,但这不适用于UISplitViewController。为什么UISplitViewController无法成为UIWindow的rootViewController属性?
如果我这样做,我没有收到任何编译错误,并且应用程序正在运行,但在应用程序启动时不显示任何屏幕。
由苹果文档了解UISplitViewController推荐的方法是做你的应用程序代理启动方法中的以下:
[window addSubview:splitViewController.view];
我只是想知道为什么UISplitViewController需要这种不同的方法。
当然,这是有效的。事实上,这正是Xcode 4.0.2中基于分割视图的应用程序模板(SDK 4.3)的作用。
分割视图控制器仅适用于iPad,不适用于iPhone。你在iPhone项目上试用这个吗?
你确定这是不可能的吗? rootViewController
需要是UIViewController
和UISplitViewController
是和UIViewController
。尝试重新启动Xcode。如果这不起作用,那么这是一个很大的机会,所以我建议你把它提交给Apple的bug记者。
我创建了一个新的项目,使用xcode 4和低版本的分割视图模板,并且可以将UIWindow的rootViewController属性设置为UISplitViewController。我所做的错误是没有正确实例化详细的子视图控制器(右图)。感谢您的快速响应。 – donturner
我没有任何问题制作UISplitViewController UIWindow rootViewController。实际上,Split View应用程序模板会生成以这种方式配置应用程序的代码。
DLog(@"Method: homeScreenViewController");
UISplitViewController *svc = (UISplitViewController*)[self.storyboard instantiateViewControllerWithIdentifier:@"HomeViewiPad"];
//[self presentViewController:svc animated:YES completion:nil];
UIWindow *window = [[[UIApplication sharedApplication] windows] objectAtIndex:0];
window.rootViewController = svc;
[window makeKeyAndVisible];
/*
for (UIWindow *window in [[UIApplication sharedApplication] windows])
{
if ([window screen] == [UIScreen mainScreen])
{
window.rootViewController = svc;
//UIViewController *con = [self.storyboard instantiateViewControllerWithIdentifier:@"HomeiPad"];
//[window addSubview:con.view];
[window makeKeyAndVisible];
}
}
*/
// vKj
OK,我现在觉得有点愚蠢。这是可能的,只要你不是一个完整的布偶。谢谢大家的答案。 – donturner