获取viewController的三种方法

主要的方法有三种:

1)获取当前view第一个响应的VC

- (UIViewController *)fristResponseViewController
{
  UIViewController *viewController = nil;  
  UIResponder *next = self.nextResponder;
  while (next)
  {
    if ([next isKindOfClass:[UIViewController class]])
    {
      viewController = (UIViewController *)next;      
      break;    
    }    
    next = next.nextResponder;  
  }
    return viewController;
}

2) 获取当前window,但是必须view add上去才能用 不然self.window是nil

[self.window.rootViewController presentViewController:VC animated:NO completion:nil];

3)任何时候都可以使用

[[UIApplication sharedApplication].keyWindow.rootViewController presentViewController:VC animated:NO completion:nil];

总结:第一,二种方法必须把view添加上去,第三种方法就不存在这种问题,不过,一般情况,肯定是view添加上去才会触发调用.

你可能感兴趣的:(获取viewController的三种方法)