1.判断当前视图所处的vc
- (UIViewController *)viewControllerForView:(UIView *)view{
for (UIView* next = [view superview]; next; next = next.superview) {
UIResponder* nextResponder = [next nextResponder];
if ([nextResponder isKindOfClass:[UIViewController class]]) {
return (UIViewController*)nextResponder;
}
}
return nil;
}
注意:这个地方在查找view的相关属性的时候,两件事:第一,保证该View是否已经创建,是否已经正确的创建,最好是在视图生命周期末端去操作。第二,获取到你想要的东西以后多判断,也许拿到的值并不是你要的值。要进行匹配判断。
2.判断当前VC的前一个界面的类型
- (UIViewController *)yy_router_realViewController {
if ([self isKindOfClass:[UITabBarController class]]) {
return [[(UITabBarController *)self selectedViewController] yy_router_realViewController];
} else if ([self isKindOfClass:[UINavigationController class]]) {
return [[(UINavigationController *)self topViewController] yy_router_realViewController];
} else {
return self;
}
}