簡體   English   中英

為什么 UISplitViewController 不能是 UIWindow 的 rootViewController 屬性?

[英]Why can't a UISplitViewController be the rootViewController property of a UIWindow?

在 iPhone 應用程序中創建初始視圖時,您可以將主 UIWindow 的 IBOutlet rootViewController 屬性設置為默認視圖控制器,但這不適用於 UISplitViewController。

如果我這樣做,我不會收到任何編譯錯誤,並且應用程序會運行,但應用程序啟動時不會顯示任何屏幕。

Apple 文檔為 UISplitViewController 推薦的方法是在您的應用程序委托啟動方法中執行以下操作:

[window addSubview:splitViewController.view];

我只是想知道為什么 UISplitViewController 需要這種不同的方法。

這當然有效。 事實上,這就是 Xcode 4.0.2 (SDK 4.3) 中基於拆分視圖的應用程序模板所做的。

不過,拆分視圖控制器僅適用於 iPad,而不適用於 iPhone。 你是在 iPhone 項目上嘗試這個嗎?

更新

從 iOS 8 開始,它適用於所有設備。

你確定不可能? rootViewController需要是一個UIViewController並且UISplitViewController一個UIViewController 嘗試重新啟動 Xcode。 如果這不起作用,則很有可能是錯誤,因此我建議您將其提交給 Apple 的錯誤報告者。

我在制作 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM