摘要:本文主要向大家介绍了VC编程之IOS判断当前UIViewController 是否正在显示,通过具体的内容向大家展示,希望对大家学习VC编程有所帮助。
本文主要向大家介绍了VC编程之IOS判断当前UIViewController 是否正在显示,通过具体的内容向大家展示,希望对大家学习VC编程有所帮助。
我通常的做法是根据视图控制器的生命周期来判断,其是否是正在使用的状态.
举例 设一个实例布尔变量isVisible 在 -ViewWillAppear 里面 isVisible = YES ; 在-ViewWillDisappear 里面 isVisible = NO; 然后根据条件需要实施方法
最近同事分享一个巧妙方法如下://edsioon.me/if-uiviewcontroller-is-display/
判断UIViewController是否正在显示
2014年4月18日 edsioon 经验总结
某些情况下,需判断当前ViewController是否正在显示,比如后台网络请求报错,我们可能只希望在发起请求的页面弹窗提示用户,当用户已经跳转到其他界面,不做弹窗,减少对用户的干扰。
假如一个UIView对象当前正在显示,那么它的window属性肯定为非空值。虽然官方文档未说明UIView未显示时window属性的取值,但是经过简单的测试,大部分情况下UIView未显示时,window的值为空,因此依据此判断当前UIViewController是否正在显示。但是访问UIViewController的view属性时,可能会引起view加载(假如此时还未加载),这是不必要的,而且还可能引起无法预期的问题。因此在访问view属性之前,最好先检查isViewLoaded属性来避免上述问题。
示例代码如下,在UIViewController的扩展中声明了一个isVisible方法,方便以后调用
注意:UIView的官方文档中仅注明当view还未添加到window时,window属性为空;但是并未提及当window为nil时,当前view未显示。通过简单的Demo检测上文的方法可满足大部分需求,因此使用时建议进行简单测试!
瞬间觉得自己好low 哈哈 ,但是要注意 该方法实用的条件哦!!! 不是特殊情况处理下的视图控制器,一般都能用.
我写了一个类方法 为了调用更方便哈哈
如下:
+(BOOL)isCurrentViewControllerVisible:(UIViewController *)viewController
{
return (viewController.isViewLoaded && viewController.view.window);
}
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标编程语言VC/MFC频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号