Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone UINavigationController:如何删除堆栈的视图_Iphone_Objective C_Uiviewcontroller_Uinavigationcontroller - Fatal编程技术网

Iphone UINavigationController:如何删除堆栈的视图

Iphone UINavigationController:如何删除堆栈的视图,iphone,objective-c,uiviewcontroller,uinavigationcontroller,Iphone,Objective C,Uiviewcontroller,Uinavigationcontroller,假设这是我的堆栈布局 View3 --> Top of the stack View2 View1 HomeView --> Bottom of the stack 因此我现在在View3中,如果我单击Home按钮,我想加载HomeView,这意味着我需要弹出View3、View2和View1。但是如果我弹出View3,将显示View2。我不想那样。我希望删除View3、View2和View1,并显示HomeView。知道怎么做吗?使用 您可以使用访问根viewcontr

假设这是我的堆栈布局

View3     --> Top of the stack
View2
View1
HomeView  --> Bottom of the stack
因此我现在在
View3
中,如果我单击
Home
按钮,我想加载
HomeView
,这意味着我需要弹出
View3
View2
View1
。但是如果我弹出
View3
,将显示
View2
。我不想那样。我希望删除
View3
View2
View1
,并显示
HomeView
。知道怎么做吗?

使用

您可以使用访问根viewcontroller。这将弹出堆栈中除根视图控制器之外的所有视图控制器。在您的情况下,这将是HomeView


要访问堆栈中的特定视图,可以使用假设要弹出第三个viewcontroller(从下到上)。在您的情况下,这将是view2:

使用


[self.navigationController-popToRootViewControllerAnimated:是]

它是如何工作的?文档上说你跳到了一个特定的viewController,但我一直发现seg故障。你觉得你可以给我一个快速的示例代码吗?它会弹出视图,直到特定的viewController位于堆栈顶部。你能发布一个错误日志和你的一些代码吗?好吧,假设我在
aViewController
(假设它已经在堆栈上),我推
bViewController
,然后在
bViewController
,我
popToViewController:aViewController
,但它说
aViewController
未定义,这很有意义,因为我现在在
bViewController
中。我没有对
aViewController
的引用。我是不是遗漏了什么?没错,正如@Ronnie Liew所说。你需要一个推荐人。我通常将此作业传递给我的代理,该代理引用了所有相关的ViewController。你可以这样做。(在您的情况下,请尝试
非正式的
)在示例中,我将homeview作为根目录,但在我的代码中不是这样。TYVM:)我试过了,但它说
HomeView
未定义,这很有意义,因为我在
视图3
中,所以我没有
HomeView
,是吗?是的,您需要
HomeView
的引用,您可以通过
self.navigationController.viewControllers
property来获得它。我尝试设置引用,但它不起作用。通过任何数组访问它,因为你必须跟踪索引,所以它很混乱。请您发布一些关于如何使用PopToViewController的示例代码,并通过引用进行访问,好吗?
[self.navigationController popToViewController:homeView animated:YES];
[self popToRootViewControllerAnimated:YES];
NSArray* viewControllersInStack = self.navigationController.viewControllers;
UIViewController* targetViewController = [viewControllersInStack objectAtIndex:2];
[self.navigationController popToViewController:targetViewController animated:YES];