ios - 需要展示alert时,如何获知当前 view controller
ringa_lee
ringa_lee 2017-04-17 15:07:47
[iOS讨论组]

需求是这样:

  1. app 在运行中(处于前台)
  2. app 收到一个推送通知
  3. app 需要根据推送通知展示一个 alert

请问app在收到推送时,如何知道当前是哪个 view controller 正在显示中?

在 app delegate 中处理似乎不太好。因为有可能展示的不是 alert 而是自定义 view

ringa_lee
ringa_lee

ringa_lee

全部回复(2)
PHPz

可以试试这个:

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

参考:http://blog.csdn.net/worldzhy/article/details/42120929

伊谢尔伦

我一般的做法是,整个应用程序保证只有一个UINavigationController,这样就可以把它做成单例RootNavigationController
想要获取当前控制器就这样RootNavigationController.shared.viewControllers.firstObject;

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号