我想推新的根控制器到導航堆棧,但使用側面顯示菜單。UINavigation推新的根控制器
我的應用程序委託有以下幾點:
welcomeViewController = [[MyWelcomeViewController alloc] initWithNibName:@"MyWelcomeViewController" bundle:nil];
navController = [[UINavigationController alloc] initWithRootViewController:welcomeViewController];
navController.navigationBarHidden = YES;
// Then we setup the reveal side view controller with the root view controller as the navigation controller
self.revealSideViewController = [[PPRevealSideViewController alloc] initWithRootViewController:navController];
[self.revealSideViewController setDirectionsToShowBounce:PPRevealSideDirectionNone];
[self.revealSideViewController setPanInteractionsWhenClosed:PPRevealSideInteractionContentView | PPRevealSideInteractionNavigationBar];
// Then we make the window root view controller the reveal side view controller
self.window.rootViewController = self.revealSideViewController;
一旦顯示歡迎視圖控制器,用戶登錄一旦在後續工序中再次記錄在應用委託運行。
self.navController.navigationBarHidden = NO;
[self.navController setTitle:@"Home"];
[self.navController pushViewController:homeViewController animated:NO];
然後我有一個側視圖控制器設置,這是一個帶有自定義單元格設置的表格視圖。
當選擇一行時,我需要將一個新的根控制器推到導航控制器上。我通過在表格視圖中對所選單元格使用以下內容來嘗試此操作。
MyAccountViewController *accountViewController = [[MyAccountViewController alloc] init];
[self.navigationController setViewControllers:[NSArray arrayWithObject:accountViewController] animated:NO];
不幸的是,這不起任何作用。如果我將代碼添加到App Delegate中,然後從表視圖控制器中調用該方法,那麼它將起作用,但不是從表視圖本身的.m文件中起作用。添加一個日誌我可以看到上面是運行,只是沒有做任何事情。
我不確定是否需要在上面做任何不同的事情。例如,完全彈出當前顯示的視圖,然後重新創建導航控制器和PPRevealSideViewController。如果我應該這樣做,我不確定如何彈出所有當前視圖,然後將新的視圖推送到窗口,而不是從AppDelegate。
我不想在App Delegate中這樣做的原因是因爲這是不正確的方法來處理這個問題,然後我需要一個單獨的方法來處理每個我想從菜單中推出的新根控制器,所以應用程序代表將變得非常大。
我不使用UINavigationController.h導航控制器是在代碼中設置的,因此不需要頭文件和imp文件。我如何使用提供的底部代碼更新rootViewController? – StuartM
You ** do **使用並導入UINavigationController.h,因爲在您開始使用的應用程序模板中有'#import',通常它位於前綴頭文件.pch文件中。 –
謝謝,我肯定覺得這是確切的答案,但我無法讓它工作。比方說,我有一個主視圖控制器(在navController堆棧上),然後tableViewController不在堆棧上。我如何從表格視圖控制導航控制器?你的回答中的最後一點提到了從堆棧中的視圖控制器進行控制,所以這種情況來自Home View Controller。你有代碼示例如何實現這一目標?我是否需要在表視圖中再次分配init Home View Controller,然後嘗試並控制它?謝謝 – StuartM