//获取当前屏幕显示的viewcontroller
- (UIViewController *)getCurrentVC
{
UIViewController *result = nil;
UIWindow * window = [[UIApplication sharedApplication] keyWindow];
if(window.windowLevel != UIWindowLevelNormal)
{
NSArray *windows = [[UIApplication sharedApplication] windows];
for(UIWindow * tmpWin in windows)
{
if(tmpWin.windowLevel == UIWindowLevelNormal)
{
window = tmpWin;
break;
}
}
}
UIView *frontView = [[window subviews] objectAtIndex:0];
id nextResponder = [frontView nextResponder];
if([nextResponder isKindOfClass:[UIViewController class]]){
result = nextResponder;
}else{
result = window.rootViewController;
}
return result;
}
//找到当前控制器 判断
- (UIViewController *)getDisViewController
{
UIViewController *currVC;
if ([[self getCurrentVC] isKindOfClass:[SystemViewController class]]) {//判断是是不是tabbar 是tabbar找到最好导航最后一个控制器是当前控制器
SystemViewController *tabBar = (SystemViewController *)[self getCurrentVC];
SystemNavigationController *mainNC = tabBar.selectedViewController;
return mainNC.viewControllers.lastObject;
}
/*else if ([ [self getCurrentVC] isKindOfClass:[WJInterpreterTabBarController class]])
{
WJInterpreterTabBarController *tabBar = (WJInterpreterTabBarController *)[self getCurrentVC];
WJNAVController *mainNC = tabBar.selectedViewController;
return mainNC.viewControllers.lastObject;
}*/
else if ([ [self getCurrentVC] isKindOfClass:[SystemNavigationController class]]){//如果当前页面是导航,找到导航数组中最后一个控制器 ,是当前屏幕显示的控制器
SystemNavigationController *mainNC = (SystemNavigationController *)[self getCurrentVC];
return mainNC.viewControllers.lastObject;
}else if ([ [self getCurrentVC] isKindOfClass:[UIViewController class]]){
return [self getCurrentVC] ;
}else{
return [self getCurrentVC] ;
}
}
//获取到控制器 直接跳转
UIViewController *vc = [self getDisViewController];
[vc.navigationController pushViewController:systemMessageVC animated:YES];
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。