iOS tableView实时加载数据并刷新的时候,去滚动tableView的问题


RT,在做蓝牙OBD的项目,其中有需求是从ECU中读取数据流,读取到一条就马上刷新TableView,于是我就写成这样了


 dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
    //获取数据流个数x

        for (int i = 0; i<x; i++)
        {
            //循环读取数据
            NSData * data = getData(i);
            [self.fcArray addObject:data];

            dispatch_async(dispatch_get_main_queue(), ^{
                //读取到数据就马上reloadData
                [self.tableView reloadData];
            });
        }

整个过程就这样,显示什么都没问题,但是我发现在他读取数据的时候,我去滚动tableView的话,tableView滚动会表现得卡卡的,然后经常是好像根本没有滚动到似的,请问这是什么原因

好久没来,更新下答案
首先谢谢大家的帮忙,我这个问题已经解决了,我是设置数据刷新前判断tableView是否在滚动,如果是的话就等等再刷新

ios uitableview

fuliba 10 years, 11 months ago

insertRowsAtIndexPaths: withRowAnimation 应该是你需要的

太君我给您带路 answered 10 years, 11 months ago

你不能读一条就刷新一条,这样势必会卡。

可以这样处理:读一条就把数据更新,但是并不要 reloadData ;另外单开一个定时器,比如3秒钟reload一次。

七爷拿脸拍键盘 answered 10 years, 11 months ago

把reloadData从for循环中移出来,我觉得是这里的原因

邓迪的钩子 answered 10 years, 11 months ago

Your Answer