我想回到第一个视图控制器。所以,我在第三个视图中使用了[self.navigationController popToRootViewControllerAnimated:NO]
。但是,它可以追溯到第二种观点。我必须使用popToViewController: animated:
吗?
我推了第三个视图:
[self.view addSubview:secondController.view]; // from the first view
[self.navigationController pushViewController:thirdController animated:YES]; // from the second view
答案 0 :(得分:2)
在使用[self.navigationController popToRootViewControllerAnimated:NO]
之前删除第二个视图:
UIView *v = [self.navigationController.viewControllers objectAtIndex:1];
[v removeFromSuperview];
修改强>
我这样做并且工作正常(我在堆栈的第三个视图中使用它):
NSMutableArray *allControllers = [[NSMutableArray alloc] initWithArray:self.navigationController.viewControllers];
[allControllers removeObjectAtIndex:1];
[self.navigationController setViewControllers:allControllers animated:NO];
[allControllers release];
[self.navigationController popViewControllerAnimated:YES];
答案 1 :(得分:0)
看起来你的navigationController是在推送thirdController时启动的。你的secondController没有被navigationController“推”,它被添加为子视图,这是完全不同的。所以,当你从secondController推送thirdController时,它认为你的rootController是secondController。
这里有两个选项:
你可能会popToViewController
,正如你所提到的......如果这种方法有效,我会不肯定,但这是可能的。