2011-08-24 58 views
3

在iPhone应用程序中创建初始视图时,可以将主UIWindow的IBOutlet rootViewController属性设置为默认视图控制器,但这不适用于UISplitViewController。为什么UISplitViewController无法成为UIWindow的rootViewController属性?

如果我这样做,我没有收到任何编译错误,并且应用程序正在运行,但在应用程序启动时不显示任何屏幕。

由苹果文档了解UISplitViewController推荐的方法是做你的应用程序代理启动方法中的以下:

[window addSubview:splitViewController.view]; 

我只是想知道为什么UISplitViewController需要这种不同的方法。

+0

OK,我现在觉得有点愚蠢。这是可能的,只要你不是一个完整的布偶。谢谢大家的答案。 – donturner

回答

3

当然,这是有效的。事实上,这正是Xcode 4.0.2中基于分割视图的应用程序模板(SDK 4.3)的作用。

分割视图控制器仅适用于iPad,不适用于iPhone。你在iPhone项目上试用这个吗?

1

你确定这是不可能的吗? rootViewController需要是UIViewControllerUISplitViewControllerUIViewController。尝试重新启动Xcode。如果这不起作用,那么这是一个很大的机会,所以我建议你把它提交给Apple的bug记者。

+0

我创建了一个新的项目,使用xcode 4和低版本的分割视图模板,并且可以将UIWindow的rootViewController属性设置为UISplitViewController。我所做的错误是没有正确实例化详细的子视图控制器(右图)。感谢您的快速响应。 – donturner

1

我没有任何问题制作UISplitViewController UIWindow rootViewController。实际上,Split View应用程序模板会生成以这种方式配置应用程序的代码。

0
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

相关问题