gpt4 book ai didi

ios - [self.navigationController popToViewController :VC2 animated:NO]; crash

转载 作者:可可西里 更新时间:2023-11-01 04:04:42 27 4
gpt4 key购买 nike

您好,我正在开发一个我应该去的应用程序:

  1. UIViewController1 到 UIViewController2
  2. UIViewController2 到 UIViewController3
  3. UIViewController3 到 UIViewController4
  4. UIViewController4 回到UIViewController2

我正在使用 UINavigationController。当我使用 [self.navigationController pushViewController:VC2 animated:NO];[self.navigationController popViewControllerAnimated:NO]; 一切正常。

但是当我使用 [self.navigationController popToViewController:VC2 animated:NO];UIViewController4 应用程序终止说 Termating app due to uncaught exception 'NSInternalInconsistencyException ', 原因:'试图弹出到一个不存在的 View Controller 。'

以下是我如何跳转到 UIViewController2

的代码
for (UIViewController *vc in self.navigationController.viewControllers) {
if ([vc isKindOfClass:[ViewController2 class]]) {
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle: nil];
ViewController2 *VC2 = [storyboard instantiateViewControllerWithIdentifier:@"ViewController2"];
[self.navigationController popToViewController:VC2 animated:NO];
}
}

当我打印导航数组时,它在堆栈中显示 UIViewController2。我从编辑器中添加了 UINavigationController->embed in->Navigation Controller

谁能告诉我为什么会这样?我试图搜索这个问题,但没有任何帮助

最佳答案

在这里你实例化了一个新的 VC2 View Controller 实例,这不是你在导航 View Controller 堆栈上的实例!

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle: nil];
ViewController2 *VC2 = [storyboard instantiateViewControllerWithIdentifier:@"ViewController2"];

所以你必须在

中找到正确的实例
[[self.navigationController] viewControllers]

解决方案 1:(如 iDev 所说,跳转到堆栈上的第二个 View Controller ,如果你知道它是第二个,请使用它)

[self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:1] animated:YES];

方案二:(一般返回栈的第2层)

NSUInteger ownIndex = [self.navigationController.viewControllers indexOfObject:self];
[self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:ownIndex - 2] animated:YES];

关于ios - [self.navigationController popToViewController :VC2 animated:NO]; crash,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25135519/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com