2011-08-24 53 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

相關問題