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是否在滚动,如果是的话就等等再刷新

阅读 19k
4 个回答

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

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

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

insertRowsAtIndexPaths: withRowAnimation 应该是你需要的

新手上路,请多包涵

哥们,我现在有个项目也是和你这个一模一样的,就是通过蓝牙获取数据,回一条数据就显示一条,往上拖动tableView,又是逐一显示,请问可以指教一下不,感激不尽!

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题