gpt4 book ai didi

iphone - 如何重置 UINavigationController?

转载 作者:行者123 更新时间:2023-12-03 18:44:35 26 4
gpt4 key购买 nike

我遇到涉及 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com