我有一个由三个视图(和相关的视图控制器)组成的过程。当用户到达第三个时,他们可以选择重复步骤#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 的第一个应用程序(之前只在企业分发的应用程序上工作过),所以我想重构方法以不收到警告。有什么建议么?