iphone - IOS。 viewControllers 数组的错误?

标签 iphone ios uiviewcontroller nsarray viewcontroller

- (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,则弹出 2 个最后的 UIViewControllers 否则弹出 1 个最后的 UIVIewController。

我认为这些字符串没有任何意义:
        NSArray *tempArr = self.navigationController.viewControllers;
        self.navigationController.viewControllers = tempArr;

但是如果我删除它们,那么我会弹出 2 个最后的 UIViewControllers 并获取 CustomViewController 的标题而不是当前 UIViewController 的标题。

这是一个错误吗?这段代码能在 iOS 6 中运行吗?

最佳答案

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

- (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];

关于iphone - IOS。 viewControllers 数组的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12705989/

相关文章:

iphone - iOS:如何知道是否调用了 viewDidLoad?

ios - 以编程方式加载 View

iphone - Cocos2D中如何防止在特定区域(也是 Sprite )内检测到 Sprite ?

iphone - 如何设置 Eclipse 来进行 iPhone 开发(而不是 Xcode)?

iphone - 如何访问附加到 UIGestureRecognizer 的选择器的名称?

ios - UIScrollView 中的 touchesBegan 调用了两次

ios - 防止输入文本缩放

ios - Swift 零除以零得到 NAN

ios - 错误二元运算符 '==' 不能应用于两个 'MKAnnotation' 操作数

ios - 如何在 Swift 中将值从自定义单元格设置/传递到 View Controller