- (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/