我正在尝试将新的根控制器推送到导航堆栈,但使用侧面显示菜单。
我的应用程序委托具有以下内容:
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;
显示欢迎视图控制器后,用户登录。登录后,以下过程再次从 App Delegate 运行。
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 中这样做的原因是因为它是处理这个问题的不正确方法,然后我需要为每个我想从菜单中推送的新根控制器使用单独的方法,所以 App Delegate 会变成很大。