我有一个类似于这个问题的问题问题,但出现的原因不同。
我有一个视图 A>B>C>D>E 的导航控制器。
在 CI 中推送到 D,其中用户“创建一个新会话”。有时用户想向这个新会话添加详细信息,因此他们单击添加详细信息推送到 E。
当他们不选择添加细节时,他们在 D 上按“完成”,我打电话给[navControler popViewControllerAnimated:YES];
他们,他们最终在 C 中没有上述问题中提到的问题,这意味着如果在 C 上他们按回,它成功转到 B。但是,当他们确实添加细节时,他们会转到 E,完成后他们按下导航 ctrl 的后退按钮。那时我添加了这段代码以将它们带回 C:
NSArray *allViewControllers = [[self navigationController] viewControllers];
for (UIViewController *aViewController in allViewControllers) {
if ([aViewController isKindOfClass:[TSessionMgmtViewController class]]) {
[self.navigationController popToViewController:aViewController animated:NO];
}
}
他们最终回到 C,但是当他们点击 C 上的后退按钮时,它会执行奇怪的后退动画,但最终会再次出现在 C 上。然后再按一次将它们带回 B。
我已经检查了以下内容:我没有调用额外notifications
的导致额外的 C 被推送。我没有以任何其他方式推动 C,我检查了导航控制器堆栈, NSLog(@"nav controller stack: %@", [[self navigationController] viewControllers]);
并且它没有在堆栈上显示额外的 C。
那么这是C上的后退按钮本身的问题吗?或者是否有一些不可见的 C 视图控制器,但在打印堆栈时不显示?
提前非常感谢!