Objective c 为什么可以';UISplitViewController不是UIWindow的rootViewController属性吗?
在iPhone应用程序中创建初始视图时,可以将主UIWindow的IBOutlet rootViewController属性设置为默认视图控制器,但这不适用于UISplitViewController 如果我这样做,我不会收到任何编译错误,应用程序会运行,但在应用程序启动时不会显示任何屏幕 Apple docs为UISplitViewController推荐的方法是在应用程序委托启动方法中执行以下操作:Objective c 为什么可以';UISplitViewController不是UIWindow的rootViewController属性吗?,objective-c,ios,cocoa-touch,Objective C,Ios,Cocoa Touch,在iPhone应用程序中创建初始视图时,可以将主UIWindow的IBOutlet rootViewController属性设置为默认视图控制器,但这不适用于UISplitViewController 如果我这样做,我不会收到任何编译错误,应用程序会运行,但在应用程序启动时不会显示任何屏幕 Apple docs为UISplitViewController推荐的方法是在应用程序委托启动方法中执行以下操作: [window addSubview:splitViewController.view];
[window addSubview:splitViewController.view];
我只是想知道为什么UISplitViewController需要这种不同的方法。你确定这不可能吗
rootViewController
需要是UIViewController
并且uiplitviewcontroller
是UIViewController
。尝试重新启动Xcode。如果这不起作用,很有可能是一个bug,所以我建议你把它提交给苹果的bug reporter。当然可以。事实上,这就是Xcode 4.0.2(SDK 4.3)中基于拆分视图的应用程序模板所做的
不过,拆分视图控制器仅适用于iPad,而不是iPhone。你是在iPhone项目上尝试这个吗
更新
由于iOS 8,它在所有设备上都可用。我在制作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我使用xcode 4和low中的分割视图模板创建了一个新项目,现在可以将UIWindow的rootViewController属性设置为UISplitViewController。我犯的错误是没有正确地实例化详细的子视图控制器(右边的那个)。谢谢你的迅速回复。好吧,我现在觉得有点傻。这是可能的,只要你不是一个完全的木偶。谢谢大家的回答。