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...

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

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

ios 获取当前控制器的方法

处理友盟埋点的时候用到,可以获取当前控制器     NSString *className = NSStringFromClass([self class]);...

iOS获取当前的控制器

#pragma mark 获取当前的控制器 - (UIViewController *)getCurrentVC {     UIViewController *result = ni...

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

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

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

用一个分类,具体: .h #import @interface UIView (CurrentController)/** 获取当前View的控制器对象 */ -(UIViewController ...

ios 获取当前屏幕的ViewController

看了好多地方给出的方法//获取当前屏幕显示的viewcontroller - (UIViewController *)getCurrentVC { UIViewController *resu...

ios获取当前视图所在的viewController

有的时候,我们需要在某个view中获取到这个view所在的控制器,以便进行controller相关的操作,比如push到一个新的控制器,下面就介绍一下如何获取。 我们可以为UIView写一个分类,如下...

IOS8如何获取当前UIViewController

百度中有一大把获取当前UIViewController的代码,但是在ios8一旦present之后就拿不到了,在百度找了一大推都是没用的东西,后来翻墙找老外,有老外发现了这个问题,但是给出的解决方案也...

iOS 获取当前正在显示的ViewController

iOS 获取当前正在显示的ViewController,方法有如下几种: 1:从UIWindow中获取 #import "UIWindow+SHHelper.h" @implementation U...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS 获取当前正在显示的ViewController
举报原因:
原因补充:

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