2015-08-14 89 views
0

我需要將主屏幕的視圖控制器設置爲導航控制器的根,無論用戶如何達到它(推/顯示或自定義輪播)iOS 7 - 將當前視圖控制器設置爲導航根

下面的代碼放在一個視圖控制器的viewDidLoad中似乎有與iOS 7無效果:

[self.navigationController setViewControllers:@[self]]; 

導航堆棧不發生變化的。

你有沒有經歷過類似的問題?

感謝, DAN

回答

0

創建應用程序代理導航控制器的全球參考,然後用的appDelegate的參考,你可以改變你rootView控制器的任何地方,只要輸入以下代碼:

[appDelegate.navigaitonController initWithRootViewController:viewController]; 

注:這裏viewController是您想要設置爲導航控制器根目錄的新viewcontroller引用。

+0

的UINavigationController沒有setRootViewController方法。 在視圖控制器的viewDidLoad中調用[appDelegate.navigationController setViewControllers:@ [self]]不起作用[self.navigationController setViewControllers:@ [self]] – DAN

+0

@DAN您可以在setRootViewController的地方使用initWithRootViewController。 initWithRootViewController是導航控制器的實例方法。 – Alok

+0

如果仍然無法正常工作,請讓我再次瞭解您的代碼塊。我會爲你提供解決方案。 – Alok

0

從應用程序委託調用你的UIViewController方法就像這樣..試試吧。

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
ViewController* pp = [[ViewController alloc] init]; 
UINavigationController* nav = [[UINavigationController alloc] initWithRootViewController:pp]; 
self.window.rootViewController = nav; or [self.window setrootviewcontroller=nav]; 
[self.window addSubview:[nav view]]; 
[self.window makeKeyAndVisible]; 
+0

我無法打開我的視圖控制器,因爲它可以從多個故事板的不同流程達到 – DAN

+0

@DAN檢查此鏈接可能會幫助您http://stackoverflow.com/questions/8297701/using -multiple-storyboards-in-ios –

+0

感謝您的提示,但我的問題不是如何鏈接故事板,我想了解爲什麼setViewControllers方法不起作用 – DAN

0

只有一條線,讓您的當前的viewController作爲RootViewController的

[[[UIApplication sharedApplication] delegate] window].rootViewController = self; 
+0

這會更改整個應用程序的根視圖控制器,但不會影響導航控制器堆棧 – DAN

相關問題