适当的时刻从导航堆栈中删除控制器

时间:2014-01-27 09:58:44

标签: ios uinavigationcontroller

我有一个非常简单的情况:我有三个UIViewControllers,A,B,C A打开B,B打开C.现在,从控制器C开始,应用程序应该转到控制器A,而不是B.实现此目的的正确方法是什么?

1)在控制器C上制作自定义后退按钮,使其“back”方法并在其中弹出控制器A?
2)通过从导航控制器获得的控制器阵列并删除控制器B?在控制器C的viewDidLoad中执行此操作? 3)浏览从导航控制器获得的控制器阵列,并在控制器B的viewWillDisappear中删除控制器B和o?

3 个答案:

答案 0 :(得分:0)

如果要将所有viewcontroller弹出到根视图控制器,可以使用popToRootViewControllerAnimated

[navigationController popToRootViewControllerAnimated:NO];

根据您的需要将动画设置为YES / NO,无论您是否想要动画。

您可以将此代码置于后退按钮上。

答案 1 :(得分:0)

在控制器C上创建一个自定义后退按钮,并将其后面的事件写为:

-(IBAction)backButtonAction:(id)sender
{
    [self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:0] animated:YES];
}

查看您的视图层次结构我确信它会弹出到控制器A。

答案 2 :(得分:0)

试试这个:

在后退按钮选择器方法上,弹出到导航控制器的根视图控制器。

-(void)backBtnAction:(id)sender
{
[self.navigationController popToRootViewControllerAnimated:YES];
}