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

描述

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

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

案例

多个相同控制器同时存在导致某个方法被多次执行的问题的解决_第1张图片
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 ====重叠执行====");
}

你可能感兴趣的:(多个相同控制器同时存在导致某个方法被多次执行的问题的解决)