从navigationcontroller viewControllers数组中删除额外的viewcontrollers

时间:2013-08-18 07:07:09

标签: iphone objective-c ios6 automatic-ref-counting

我有一个由三个视图(和相关的ViewControllers)组成的进程。当用户到达第三个时,他们可以选择重复步骤#2。如果发生这种情况,我创建一个带有一些值的步骤2的新viewcontroller并使用navigationController推送它。但是,我想修改viewControllers数组,以便如果用户返回它们不会在步骤3中结束,而是在步骤1中结束。

所以我按下我的viewController,然后从堆栈中删除无关的#3和#2,如下所示:

    NSMutableArray *navigationArray = [[NSMutableArray alloc] initWithArray: step2AgainVc.navigationController.viewControllers];
[navigationArray removeObjectAtIndex: navigationArray.count - 3];
[navigationArray removeObjectAtIndex: navigationArray.count - 2];
[step2AgainVc.navigationController setViewControllers:navigationArray animated:NO];

但是,这会产生以下控制台警告:

Finishing up a navigation transition in an unexpected state. Navigation Bar subview tree might get corrupted.

除此之外,一切都按预期工作。 现在这是我计划提交给App Store的第一个应用程序(仅在之前使用过企业分发的应用程序),因此我想重构该方法以避免收到警告。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

您需要在开始推送新控制器之前或在完成动画制作之后修改数组。警告报告的问题是您在动画中间更改了导航控制器状态,因此它不能保证一切都能正常运作。