多个相同控制器同时存在导致某个方法被多次执行的问题的解决

描述

多个相同控制器的情况出现在页面相同只是接口参数不同造成数据不同,多出现在继承关系.
控制器(被继承的那个)里有 一段接收通知的代码 放在 viewdidload 里.
多个控制器继承上面的控制器,并且这多个控制器同时存在.
问题就是:这个被集成的控制器每次收到通知会执行多次对应方法

.....分割线.....

案例

00000.gif

点击支付的的时候,因为全部待付款都有去支付按钮从 footer 中发送的通知,这两个页面都会接收到通知,会跳转两次

....分割线.....

解决

判断当前控制器的 view 是否有跟 window 重合,来确定是否执行此次方法

....分割线....

代码

CGRect windowRect = [UIApplication sharedApplication].keyWindow.bounds;
CGRect myViewRect = [self.view convertRect:self.view.bounds toView:nil];
BOOL overlap = CGRectIntersectsRect(windowRect, myViewRect);
    if (overlap) {
        //        NSLog(@"======chongdie ====重叠执行====");
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,387评论 25 708
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,951评论 19 139
  • XSS是什么?它的全名是:Cross-site scripting,为了和CSS层叠样式表区分所以取名XSS。是一...
    圆心角阅读 524评论 2 0
  • 亲们晚安
    刘月利阅读 246评论 0 0
  • 一个人的生活应该是什么样子的呢?有人说,生活应该是忙碌的,为了未来不断努力,不管三七二十八能学的东西都不能放过。又...
    慢生活msh阅读 404评论 0 2