扫码关注官方订阅号
需求是这样:
请问app在收到推送时,如何知道当前是哪个 view controller 正在显示中?
在 app delegate 中处理似乎不太好。因为有可能展示的不是 alert 而是自定义 view
ringa_lee
可以试试这个:
//获取当前屏幕显示的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;
UINavigationController
RootNavigationController
RootNavigationController.shared.viewControllers.firstObject
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
可以试试这个:
参考:http://blog.csdn.net/worldzhy/article/details/42120929
我一般的做法是,整个应用程序保证只有一个
UINavigationController,这样就可以把它做成单例RootNavigationController。想要获取当前控制器就这样
RootNavigationController.shared.viewControllers.firstObject;