查找哪个视图控制器是父视图控制器

4

我有三个视图控制器,它们相互推入导航控制器。

ViewController1 可以推出 VC2 或 VC3 VC2 可以推出 VC3

这意味着,VC3 要么是由 VC1 打开的,要么是由 VC2 打开的。VC1 是 UITableViewController 的子类,而 VC2 是 UIViewController 的子类。

现在,在 VC3 中,我想知道是 VC1 还是 VC2 创建了 VC3。我该怎么做?

1个回答

7

您可以进行检查;

[vc3 parentViewController];

这是一个返回UIViewController的函数。
根据你的需求,你可以执行以下操作:

if ([[vc3 parentViewController] isKindOfClass:[VC1 class]]) {
   //has been pushed by VC1
}
else if ([[vc3 parentViewController] isKindOfClass:[VC2 class]]) {
   //has been pushed by VC2
}

好的,我在VC3中进行检查,所以我猜我应该写:[self parentViewController],对吗?但是它的类不是UIViewController,而是UINavigationController。至少这就是它返回的内容:[[self parentViewController] class] - Linus
3
是的,你可以调用[self parentViewController]。这有点棘手,但你应该访问UINavigationController中的UIViewControllers数组。以下是一个解决方案:`NSArray *array = [[self navigationController] viewControllers]; NSLog(@"parentViewController:%@",[[array objectAtIndex:([array count] -2)] class]);` - Manlio
@Saphrosit 谢谢你提供的数组解决方案。 - CalZone

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接