我创建了一个具有串行 View (A、B、C、D、...)的应用程序,我需要将 D 弹出回 B。 有人可能会说为什么不使用:
[self.navigationController popToViewController:[[self.navigationController viewControllers] objectAtIndex:1] animated:YES];
但是,这不是一个好的解决方案。因为这个方法需要你得到我们的“B”所在的索引。
问题:如何获取viewControllers中“B”的索引?
UIViewControllers
中的格式应该是:
“<答:0x6e70710>”,
“
我已经尝试使用 rangeOfString
和 hasPrefix
来获取“B” View 的索引,但没有成功。
最佳答案
在这里,我想知道 NavigationController 通过 Stack 的概念
管理 ViewController。即 LAST COME FIRST OUT
。这里有两种实现相同的方法。
1)在这里您可以进行迭代以获得如下所示的理想 ViewController
for (id controller in [self.navigationController viewControllers])
{
if ([controller isKindOfClass:[BViewController class]])
{
[self.navigationController popToViewController:controller animated:YES];
break;
}
}
2) 这里有 A,B,C,D
Controller 。意味着 B
将在第三位,所以你能做什么
您可以如下硬连接索引
[self.navigationController popToViewController:[[self.navigationController viewControllers] objectAtIndex:2] animated:YES];
希望对你有所帮助..
关于ios - 如何从navigationController(viewControllers/stack)弹回指定viewController?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13393308/