iOS 关于定时器和tableview刷新

有个需求是在首页显示一个时间的倒计时,
计算了时间差,用定时器做了倒计时。
后来发现bug,首页滑动到最下边的时候会自己滚回最上边,有些cell伤放的collectionview,上面的cell点击偶尔不响应,还有个cell放了一个滚动的资讯label(用了第三方),这个cell上的资讯不会滚动
经思考发现,我在定时器的方法里设置了每秒刷新数据,而且我写了[tableview reloadData]
这肯定是不对的,每秒都刷新tableview的话,就导致了上面说的问题
于是做了相应调整。
在定时器触发的方法中,获取到设置倒计时的cell(全局变量),每秒刷新数据的时候,直接将cell的label赋值,如下:

//定时器执行方法
- (void)timechang:(id)sender {
    [_homeVM getCountDownTime];
    if (_homeVM.countdown.showType == 3) {
        [self resetTimer];
    }
    NSLog(@"%@天-%@时-%@分-%@秒", _homeVM.countdown.day, _homeVM.countdown.hour, _homeVM.countdown.minute, _homeVM.countdown.second);
    //之前写的[tableview reloadData]。这样会导致每秒都在刷新整个界面,界面滑动卡,cell点击偶尔不响应,严重影响性能。不应该每秒都刷新整个界面(只刷新分区或单个cell也不行,每秒都刷新cell会导致分区或cell一直在闪),只需要将计算好的时间差赋值给cell即可,每秒都给cell赋值一次数据,达到刷新数据的目的。
    [self.countdownCell setTimeWithCountDown:_homeVM.countdown pic:_homeVM.conduct.advertPic];
}

你可能感兴趣的:(iOS 关于定时器和tableview刷新)