找到哪个viewController是父级

Lin*_*nus 2 objective-c ios

我有三个视图控制器互相推送到导航控制器.

ViewController1可以推送VC2或VC3 VC2可以推送VC3

这意味着,VC3或VC2打开VC3.VC1是UITableViewController的子类,VC2是UIViewController的子类.

现在,在VC3中,我想知道VC1或VC2是否创建了VC3.我怎样才能做到这一点?

Man*_*lio 5

你可以检查;

[vc3 parentViewController];
Run Code Online (Sandbox Code Playgroud)

返回一个UIViewController.
根据你的需要,你可能会这样做

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

  • 是的,你可以调用`[self parentViewController]`.这有点棘手,但您应该在UINavigationController中访问UIViewControllers数组.这是一个解决方案:`NSArray*array = [[self navigationController] viewControllers]; NSLog(@"parentViewController:%@",[[array objectAtIndex:([array count] -2)] class]);` (3认同)