【问题标题】:How to "pop" several View controllers in UINavigationController Stack?如何在 UINavigationController Stack 中“弹出”多个视图控制器?
【发布时间】:2011-09-28 15:44:32
【问题描述】:

在我的应用程序中,我正在实施UINavigationController。有几个UIViewControllers 被压入堆栈。

当我到达最后一个时,我希望(根据用户操作)弹出除第一个 UIViewController 之外的所有 UIViewController。我该怎么做?

我知道如何弹出最后一个,但我如何指示所有以前的也消失?

【问题讨论】:

    标签: ios view uinavigationcontroller release


    【解决方案1】:

    你可以试试UINavigationController classpopToRootViewControllerAnimated:popToViewController:animated:popViewControllerAnimated:消息。

    【讨论】:

    • +1, popToRootViewControllerAnimated: 是他要找的。​​span>
    • 这不会卸载堆栈上的视图控制器......如果我想这样做,我需要做什么?
    【解决方案2】:

    在您的情况下,按照 Irene 的建议使用 popToRootViewcontrollerAnimated: 确实很有用,但是如果有人需要弹出确切数量的控制器,那么下面的代码可能很有用:

    - (void) popControllersNumber:(int)number
    {
        if (number <= 1)
            [[self navigationController] popViewControllerAnimated:YES];
        else
        {
            NSArray* controller = [[self navigationController] viewControllers];
            int requiredIndex = [controller count] - number - 1;
            if (requiredIndex < 0) requiredIndex = 0;
            UIViewController* requireController = [[[self navigationController] viewControllers] objectAtIndex:requiredIndex];
            [[self navigationController] popToViewController:requireController animated:YES];
        }
    }
    

    【讨论】:

      【解决方案3】:

      使用

       TravelViewController *travelView = [self.navigationController.viewControllers objectAtIndex:self.navigationController.viewControllers.count-3];
       [self.navigationController popToViewController:travelView animated:YES];
      

      【讨论】:

        猜你喜欢
        • 2011-12-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-08
        • 2013-07-25
        • 1970-01-01
        相关资源
        最近更新 更多