我有三个视图控制器,它们相互推入导航控制器。
ViewController1 可以推出 VC2 或 VC3 VC2 可以推出 VC3
这意味着,VC3 要么是由 VC1 打开的,要么是由 VC2 打开的。VC1 是 UITableViewController 的子类,而 VC2 是 UIViewController 的子类。
现在,在 VC3 中,我想知道是 VC1 还是 VC2 创建了 VC3。我该怎么做?
我有三个视图控制器,它们相互推入导航控制器。
ViewController1 可以推出 VC2 或 VC3 VC2 可以推出 VC3
这意味着,VC3 要么是由 VC1 打开的,要么是由 VC2 打开的。VC1 是 UITableViewController 的子类,而 VC2 是 UIViewController 的子类。
现在,在 VC3 中,我想知道是 VC1 还是 VC2 创建了 VC3。我该怎么做?
您可以进行检查;
[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
}
[self parentViewController]
,对吗?但是它的类不是UIViewController,而是UINavigationController。至少这就是它返回的内容:[[self parentViewController] class]
。 - Linus[self parentViewController]
。这有点棘手,但你应该访问UINavigationController中的UIViewControllers数组。以下是一个解决方案:`NSArray *array = [[self navigationController] viewControllers]; NSLog(@"parentViewController:%@",[[array objectAtIndex:([array count] -2)] class]);`
- Manlio