我遇到涉及 UINavigationController 的问题。
我有一个具有三个 View Controller 的应用程序,我使用导航 Controller 的推送和弹出功能在这三个 View Controller 之间进行切换。
问题是这样的:
我站在第三个 View Controller 中并调用电话
[self.navigationController popToRootViewControllerAnimated:YES];
这将我带到第一个 View Controller (这正是我想要的),但是当我尝试导航到第二个 View Controller 时,由于某种原因,我最终进入了第三个 View Controller 。
有什么方法可以重置导航 Controller ,还是我这样做的方法不对?
这是我用来推送和弹出导航 Controller 的代码:
当用户决定启动相机时,将在 Root View Controller 中调用以下代码。
if(self.cameraViewController == nil)
{
CollageCameraViewController *camView = [[CollageCameraViewController alloc] init];//WithNibName:nil bundle:[NSBundle mainBundle]];
self.cameraViewController = camView;
[camView release];
}
[self.navigationController pushViewController:self.cameraViewController animated:NO];
用户拍摄照片后,从 CollageCameraViewController(第二个)调用以下代码:
if(self.renderView == nil)
{
CollageRenderViewController *renderViewController = [[CollageRenderViewController alloc] initWithNibName:nil bundle:[NSBundle mainBundle]];
self.renderView = renderViewController;
[renderViewController release];
}
[self.navigationController pushViewController:self.renderView animated:YES];
当用户决定返回主(根) View 时,将从 CollageRenderViewController 调用以下代码:
[self.navigationController popToRootViewControllerAnimated:YES];
现在,如果我尝试再次推送 CollageCameraViewController,我最终会进入 CollageRenderViewController,这是为什么?
干杯, 安德烈亚斯
最佳答案
在进入真正的主屏幕之前,我的堆栈中有多个 VC 作为设置屏幕。
我让我的工作像这样:
HomeViewController *hvc = [[HomeViewController alloc] init];
[self.navigationController pushViewController:hvc animated:YES];
self.navigationController.viewControllers = [[NSArray alloc] initWithObjects:hvc, nil];
我推送 HomeViewController,然后重写堆栈以仅包含主屏幕。
关于iphone - 如何重置 UINavigationController?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1612747/