iOS 获取当前正在显示的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;
} 

1

2

3

4

5

6

7

8

9

func rootViewCon() -> UIViewController {

    

    var topVC UIApplication.shared.keyWindow?.rootViewController

    while topVC?.presentedViewController != nil {

        topVC topVC?.presentedViewController!

    }

    

    return topVC!

}

原文地址:https://www.cnblogs.com/mafeng/p/8547411.html

时间: 2024-10-13 13:05:47

iOS 获取当前正在显示的ViewController的相关文章

iOS获取.ipa程序包

iOS获取.ipa程序包 原文在此 首先肯定不是获取自己的ipa包. 为什么要获取ipa包呢?比如,在仿写一些程序时,避免不了获取它的图片素材等等,那么最快也是最有效的方式就是获取原程序的ipa包.更或者,你想要逆向分析某一款APP时,那么只有获取了ipa后才能进行class-dump,ida等等后续工作. 一.通过越狱设备 如果有越狱手机,那么就变得很简单,只需要从AppStore下载到越狱手机,然后用iTools/PP助手等工具将ipa包备份到电脑即可,下图是使用PP助手: 如果只是为了获取

ios 获取当前view的controller

 //获取view的controller  - (UIViewController *)viewController {     for (UIView* next = [self superview]; next; next = next.superview) {         UIResponder *nextResponder = [next nextResponder];          if ([nextResponder isKindOfClass:[UIViewControll

IOS 获取,如电量,CPU,型号等

IOS 获取,如电量,CPU,型号等 电池信息可以从UIDevice batteryLevel得到,但是只能精确到0.05.- (NSDictionary*)batteryLevel{CFTypeRef blob = IOPSCopyPowerSourcesInfo();        CFArrayRef sources = IOPSCopyPowerSourcesList(blob);                CFDictionaryRef pSource = NULL;       

[iOS]如何在iOS开发中切换显示语言实现国际化

1.在Project设置,添加中英两种语言: 2.新建Localizable.strings文件,作为多语言对应的词典,存储多种语言,点击右侧Localization,勾选中英: 3.添加一个字段, 在English中,添加:"SUBMIT_BTN_TITLE" = "Go"; 在Chinese中,添加:"SUBMIT_BTN_TITLE" = "开始"; 4.一个工具类GDLocalizableController,用来切换

iOS获取当天0点

最近一个公司一个项目里有个坑,显示不了0点的数据,修改起始时间为前一天23点59分59秒则可以显示. 查看了获取当天0点代码,和网上查到的结果基本一致,如下所示(使用Category On NSDate): 1 - (NSDate *)zeroOfDate 2 { 3 NSCalendar *calendar = [NSCalendar currentCalendar]; 4 NSDateComponents *components = [calendar components:NSUInteg

iOS开发-自定义后台显示图片(iOS7-Background Fetch的应用)

之前在用电池医生的时候, 发现它有这样一个功能:当应用进入后台的时候, 会显示另外一张图片覆盖App Switcher显示的界面. 效果如下: 变成----> 而这样的一个功能, 对于保护用户隐私还是挺有用的. 这就涉及到了Background Fetch的使用.当然, Background Fetch有更多,更有用的功能, 详见-->iOS 7学习:多任务处理之Background Fetch 下面就介绍下后台图片切换的实现. 1.程序配置后台模式 操作如下: 2. AppDelegate.

检测SDWebImage有没有缓存图片 IOS 获取网络图片大小

NSURL *url = [NSURL URLWithString:[model.content objectForKey:@"image"]];             //请求网络地址数据的同步方法             //因为这个方法在子线程(全局队列)中执行,所以不需要考虑死线程的问题             SDWebImageManager *manager = [SDWebImageManager sharedManager];              [manag

iOS获取汉字的拼音

在iOS开发中经常涉及到汉字的排序,最常见的就是需要根据首字母的字符顺序排列,比如常见的通讯录等.总结出来,大致可以分为两种方法,其中参考文献[1]中提供的方法十分复杂,并且代码量很大,不建议采用.另一种方法是直接采用Core Foundation中提供的方法,十分简单,封装好的代码如下: 1 - (NSString *)transform:(NSString *)chinese{ 2 //将NSString装换成NSMutableString 3 NSMutableString *pinyin

iOS获取本地视频和网络URL视频的缩略图方法

iOS获取本地视频和网络URL视频的缩略图方法 字数222 阅读612 评论0 喜欢13 首先大家先添加AVFoundation和CoreMedia.framework两个框架 第一种本地视频获取缩略图 NSString *path = @"www.51ios.net/本地路径" MPMoviePlayerController *51iosMPMovie = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL fileU