popViewControllerAnimated

popViewControllerAnimated

我知道,覆盖后退按钮功能不是一个好的用户设计。但是我有流程,在某个时候回头将毫无意义。相反,我希望用户返回两个或多个控制器

因此,在某些ViewController中,单击后退按钮应该触发几个ViewController的弹出,而不仅仅是前面的一个。我尝试了子类化NavigationController并覆盖popViewController-Method:

- (UIViewController *)popViewControllerAnimated:(BOOL)animated
{
    if([[self.viewControllers lastObject] class] == [MyCOntroller class]){
        [super popViewControllerAnimated:NO]; // pop once

        return [super popViewControllerAnimated:animated]; // pop twice
    } else {
        return [super popViewControllerAnimated:animated];
    }
}


但是我遇到了问题,其中NavigationTopBar与ViewController在前面不再同步。有人遇到过同样的问题吗?

最佳答案

您是否尝试使用

popToViewController:animated:



  弹出视图控制器,直到
  指定的视图控制器位于
  导航堆栈的顶部。


也许您可以为此类视图控制器设置自定义后退按钮,然后尝试

- (IBAction)backButtonPressed
{
[yourNavigationcontroller popToViewController:viewController animated:YES];
}

07-26 09:39