我正在尝试将新的根控制器推送到导航堆栈,但使用侧面显示菜单。
我的应用程序委托具有以下内容:
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];
不幸的是这没有任何作用。如果我将代码添加到应用程序委托,然后从表视图控制器调用该方法,那么它就可以工作,但不能从表视图本身的 .m 文件调用。添加日志我可以看到上面的内容正在运行,只是没有执行任何操作。
我不确定我是否需要对上述内容做任何不同的事情。例如,完全弹出当前显示的视图,然后重新创建导航控制器和 PPRevealSideViewController。如果我应该这样做,我不确定如何弹出所有当前视图,然后将新视图推送到窗口,而不是从 AppDelegate 推送。
我不希望在应用程序委托中使用此方法的原因是因为这是解决此问题的错误方法,然后我需要为每个我想从菜单推送的新根控制器使用单独的方法,因此应用程序委托将变成很大。