iOS 获取当前正在显示的ViewController

原创 2014年12月24日 10:47:10

1.我们在非视图类中想要随时展示一个view时,需要将被展示的view加到当前view的子视图,或用当前view presentViewController,或pushViewContrller,这些操作都需要获取当前正在显示的ViewController。


//获取当前屏幕显示的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;
}



2.获取当前屏幕中present出来的viewcontroller。

- (UIViewController *)getPresentedViewController
{
    UIViewController *appRootVC = [UIApplication sharedApplication].keyWindow.rootViewController;
    UIViewController *topVC = appRootVC;
    if (topVC.presentedViewController) {
        topVC = topVC.presentedViewController;
    }
    
    return topVC;
}



版权声明:本文为博主原创文章,未经博主允许不得转载。

iOS 获得屏幕正在显示的Controller(自定义的控制器)的实用方法

项目有点紧张,好久没有写点东西了。后面我会抽更多时间学习和分享学习的一些总结,分享给各位,请持续关注。 具体场景我都不说了。直接上代码 - (void)needShowLogin { YP...
  • u011363981
  • u011363981
  • 2016年11月16日 15:15
  • 3062

如何通过代码获取当前正在显示的控制器

如果我们为了某个功能单独封装了一个独立的类,我们就希望这个类尽可能独立,从而减少对于外部的依赖。比如我们想要单独封装一个获取通讯录的类,必须要有一个控制器可以present出来一个ABPeoplePi...
  • WangErice
  • WangErice
  • 2016年06月04日 15:41
  • 1495

iOS获取当前的控制器

#pragma mark 获取当前的控制器 - (UIViewController *)getCurrentVC {     UIViewController *result = ni...
  • lifeng__
  • lifeng__
  • 2016年09月19日 10:46
  • 667

iOS 如何获取应用当前的控制器 UIWindow & UIWindowLevel笔记

-:有时候我们需要在非控制器类中用到应用当前的控制器,比如在工具类中弹窗、跳转界面等等。下面是获取应用当前控制器的代码: - (UIViewController *)getCurrentVC { ...
  • ZhengYanFeng1989
  • ZhengYanFeng1989
  • 2016年07月21日 18:21
  • 2793

iOS-View中或者任意类中获取当前控制器

6月30日更新Swift版本. 摘自我的GitHub https://github.com/RoJoHub/LHPackageSwiftclass func getAppTopController...
  • Mandmg
  • Mandmg
  • 2016年08月22日 19:42
  • 4459

iOS--获取当前视图控制器

+ (id)getCuttentViewController {     UIViewController *vc = nil;     UIWindow *window = [UIApplic...
  • w6524587
  • w6524587
  • 2016年08月08日 10:23
  • 607

ios 获取当前控制器的方法

处理友盟埋点的时候用到,可以获取当前控制器     NSString *className = NSStringFromClass([self class]);...
  • wangyang6275
  • wangyang6275
  • 2016年11月30日 16:07
  • 1131

获取当前视图所在控制器

在ios开发中经常在自定义组件或者xib文件中切换到其他视图,那么就需要当前控制器, - (UIViewController*)viewController {     for (U...
  • chengjiamei
  • chengjiamei
  • 2015年08月27日 10:57
  • 2850

iOS-获取当前View所在的控制器

在做轮播图的时候,有点轮播图展示的是广告,有的是活动,等等还有其他的 当前点击某个轮播的时候要跳转到不同的控制器,点击事件是在控制器写的,为了避免控制器代码过多,显示的臃肿 我创建了一个UIWin...
  • www9500net_
  • www9500net_
  • 2016年09月24日 23:00
  • 1125

iOS 获得当前页面正在显示的页面是哪一个Viewcontroller

当编写代码时,不论是在TabbarController还是在Viewcontroller或者是NavagationController中任何一个页面写方法时,我们都可以使用以下方法获取程序正在展示的当...
  • u011467458
  • u011467458
  • 2016年12月09日 19:44
  • 2421
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS 获取当前正在显示的ViewController
举报原因:
原因补充:

(最多只允许输入30个字)