在iOS 8上改变popToViewController的行为?

时间:2014-08-25 22:29:06

标签: ios uikit ios8

IOS 7 popToViewController和更早版本,返回弹出的控制器列表作为返回值。但是在iOS 8 beta 5上,它返回nil。这不适合我的应用。其他人都知道这种行为的变化吗?对我来说看起来像个错误,但有人知道这里有意改变吗?

NSArray *controllers = [self.navigationController **popToViewController:self** animated:NO];

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,我可以通过交换几行代码来解决这个问题。我认为这是一个应该由Apple修复的错误,但也许这种解决方法可以帮助其他人解决,直到它被修复。

在我的情况下,只有在UIPopoverController中触发的动作中调用popToViewController时才会出现错误。我的处理程序看起来像这样:

- (void)didSelectBreadcrumbAtIndex:(NSInteger)index {

    [self.popController dismissPopoverAnimated:YES];
    self.popController = nil;

    [self popToViewController:[self.viewControllers objectAtIndex:index] animated:YES];
}

解决方法是在调用popToViewController而不是之前调用popover。处理程序现在看起来像这样:

- (void)didSelectBreadcrumbAtIndex:(NSInteger)index {

    [self popToViewController:[self.viewControllers objectAtIndex:index] animated:YES];

    [self.popController dismissPopoverAnimated:YES];
    self.popController = nil;
}

要清楚,在这种情况下,“self”是一个派生自UINavigationController的类。