2014-04-29 43 views
2

我要推一個UINavigationController對象爲UISplitViewController,但我得到了以下信息:如何推送的UIViewController到UISplitViewController

2014-04-30 02:25:11.215 test_demo[483:70b] Split View Controllers cannot be pushed to a Navigation Controller <UINavigationController: 0x8d34360>. 

這是我的push方法:

- (IBAction)toggleToSplitView:(id)sender { 
    SplitViewController *splitViewController = [[SplitViewController alloc] init]; 
    [self.navigationController pushViewController:splitViewController animated:YES]; 
} 

事實上,我想設計一個UIViewController登錄視圖,然後,我想推到UISplitViewController。任何人都可以幫助我解決這個問題?任何幫助都感激不盡。

回答

1

男人。我不認爲將UIViewController推送到UISplitViewController是一個好主意。如果你必須這樣做。你可以使用這種方法:

SplitViewController *splitViewController = [[SplitViewController alloc] init]; 
[self.view.window setRootViewController:splitViewController]; 

但我認爲這不是一個完美的解決方案。特別是,當你需要在不同的ViewController之間推送時添加一些自定義動畫。因此,也許你應該定製一個splitView並將其添加到UIViewController。 github中有許多自定義UISplitViewController的示例代碼。

https://github.com/Alterplay/APSplitViewController

https://github.com/palaniraja/cUISplitViewController

我希望這幫助你。

+0

感謝您的幫助。這是一個很好的答案。我的程序工作。 – smith

+0

歡迎。玫瑰在你手中,在我的味道 –

+0

如何關閉SplitViewController,當我想退出它並返回到上一個窗口? – Gank

0

實際上,您正試圖將UISplitViewController轉換爲UINavigationController對象。反之亦然。這是不允許的。這就是錯誤信息所說的。

UISplitViewController是一個特定的控制器,它只能用作導航堆棧中的根視圖控制器。此外,它只能用於iPad應用程序。

+0

是的,你是對的。我明白UISplitViewController必須作爲根視圖控制器。謝謝 – smith

0

正如消息所示,你不能那樣做。

您可以做的是先顯示您的SplitViewController,然後從您的SplitViewController中顯示您的LoginView,而不顯示動畫。

+0

我嘗試將動畫設置爲NO,但我也遇到了同樣的錯誤。 – smith

+0

也許我還不夠清楚。當你啓動你的應用時,你首先顯示'LoginView',對吧?先嚐試顯示你的'SplitViewController'。然後在你的'SplitViewController'的'viewDidAppear'中,添加將出現'LoginView'的行:'[self presentViewController:self.loginViewController animated:NO completion:nil];' – Emilie

+0

我需要首先顯示登錄View Controller ,然後切換到分割視圖控制器。 – smith

0
-(void)pushView :(UIViewController *)splitViewController{ 
    self.rootViewControllerPre=self.window.rootViewController; 
    _window.rootViewController=splitViewController; 
} 

-(void)popView{ 
    _window.rootViewController=_rootViewControllerPre; 
} 
+2

一些描述你的代碼的文本會很好。 – Jehof

相關問題