如何找出哪个班推我?

时间:2014-02-02 15:16:11

标签: ios objective-c uinavigationcontroller uicollectionview

我怎样才能找到推送VC的内部,VC调用了这个函数(谁叫我到达):

调用控制器的.m中的

[self.navigationController pushViewController:calledViewController animated:YES];
在被叫控制器的.m中

NSString* class = [self.navigationController whoCalledMe];

2 个答案:

答案 0 :(得分:4)

self.navigationController.viewControllers是一个视图控制器数组,被推送到UINavigationController的堆栈 所以,最后一个是你的“self”(calledViewController)。
最后一个是推动(whoCalledMe)的那个。

所以,

NSString *className = NSStringFromClass([self.navigationController.viewControllers
    [self.navigationController.viewControllers.count -2] class]);

还要记得检查阵列中是否有至少2个视图控制器

答案 1 :(得分:2)

试试这样: -

if (self.navigationController.viewControllers.count > 1){
    UIViewController* vc = [self.navigationController.viewControllers objectAtIndex:
      self.navigationController.viewControllers.count-2]);
    NSString *className = NSStringFromClass([vc class])}
}