主要的方法有三种:
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添加上去才会触发调用.