[英]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.