1

我有一个由三个视图(和相关的视图控制器)组成的过程。当用户到达第三个时,他们可以选择重复步骤#2。如果发生这种情况,我会使用一些值创建第 2 步的新视图控制器,并使用导航控制器推送它。但是,我想修改 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 的第一个应用程序(之前只在企业分发的应用程序上工作过),所以我想重构方法以不收到警告。有什么建议么?

4

1 回答 1

0

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

于 2013-08-18T07:37:42.927 回答