2012-04-05 85 views
21

我有一個使用導航控制器的XCode iPad項目。我試圖讓一個按鈕來推UISplitViewController到導航堆棧,但得到這個錯誤:iOS:UISplitViewController無法推送到UINavigationController

Split View Controllers cannot be pushed to a Navigation Controller

原來UISplitViewController不UINavigationController的發揮很好。但是,我仍然需要在單擊此按鈕時顯示分割視圖控制器。我該怎麼做呢?而且,同樣重要的是,如何製作後退按鈕,以便用戶可以返回到導航控制器?

回答

28

要顯示SplitViewController,您需要使用setRootViewController。這是因爲SplitViewController需要成爲根視圖控制器。

從蘋果公司的文檔:

A split view controller must always be the root of any interface you create. In other words, you must always install the view from a UISplitViewController object as the root view of your application's window. The panes of your split-view interface may then contain navigation controllers, tab bar controllers, or any other type of view controller you need to implement your interface.

要回到你需要使用setRootViewController回到前面的頁面。當我將iPhone應用程序轉換爲通用程序時,遇到了這個問題,並最終使用iPhone的導航控制器和iPad版本的setRootViewController。這是一個有點無賴,因爲你不能很好地動畫without a bit of fudging

+0

我該如何使用setRootViewController?谷歌告訴我這是一個UIWindow的方法,但我無法弄清楚在哪裏找到一個UIWindow實例。 – 2012-04-05 16:29:41

+2

您需要從應用程序委託中獲取屬性,如下所示:MyAppDelegate * appDelegate =(MyAppDelegate *)[[UIApplication sharedApplication] delegate];然後[appDelegate.window setRootViewController:shareSelectViewController]; – glenstorey 2012-04-05 19:58:11

+0

非常感謝你! – 2013-04-22 22:44:07