Iphone 网间网操作系统。viewControllers阵列有缺陷吗?

Iphone 网间网操作系统。viewControllers阵列有缺陷吗?,iphone,ios,uiviewcontroller,nsarray,viewcontroller,Iphone,Ios,Uiviewcontroller,Nsarray,Viewcontroller,如果用户按“上一步”按钮且上一个UIViewController为CustomViewController,则弹出2个最后一个UIViewController,否则弹出1个最后一个UIViewController 我认为这些字符串没有任何意义: - (void)viewWillDisappear:(BOOL)animated { if ([self.navigationController.viewControllers indexOfObject:self] == NSNotFound

如果用户按“上一步”按钮且上一个UIViewController为CustomViewController,则弹出2个最后一个UIViewController,否则弹出1个最后一个UIViewController

我认为这些字符串没有任何意义:

- (void)viewWillDisappear:(BOOL)animated
{
    if ([self.navigationController.viewControllers indexOfObject:self] == NSNotFound) {
        if ([self.navigationController.viewControllers.lastObject isKindOfClass:[CustomViewController class]]) {
            NSArray *tempArr = self.navigationController.viewControllers;
            self.navigationController.viewControllers = tempArr;
            [self.navigationController popViewControllerAnimated:YES];
            return;
        }
    }
    [super viewWillDisappear:animated];
}
但是如果我删除它们,那么我会弹出最后两个UIViewController,并获得CustomViewController的标题,而不是当前UIViewController的标题


是虫子吗?这段代码在iOS 6中能正常工作吗?

有一种更好的方法可以通过使用“展开”分段来实现

基本上,您可以在ViewController上设置一个标记点,然后将视图控制器推到其顶部

然后在任何时候(当用户按下按钮或其他东西时),您都可以弹回带有标记的viewController

您不再需要计算要弹出多少视图控制器等。。。它只是工作


看到这里。

我不确定这是否真的有效,因为我不知道popViewController是在数组弹出之前还是之后检查它。其思想是删除最后一个对象,而不是弹出两次viewController

        NSArray *tempArr = self.navigationController.viewControllers;
        self.navigationController.viewControllers = tempArr;

天哪,这是我不同意的最后一句话了。
- (void)viewWillDisappear:(BOOL)animated
{
    if ([self.navigationController.viewControllers indexOfObject:self] == NSNotFound) {
        if ([self.navigationController.viewControllers.lastObject isKindOfClass:[CustomViewController class]]) {
            NSMutableArray *tempArr = [self.navigationController.viewControllers mutableCopy];
            [tempArr removeLastObject];
            self.navigationController.viewControllers = tempArr;
            return;
        }
    }
    [super viewWillDisappear:animated];