uitableview - iOS tableView实时加载数据并刷新的时候,去滚动tableView的问题
PHPz
PHPz 2017-04-17 15:05:36
[iOS讨论组]

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

PHPz
PHPz

学习是最好的投资!

全部回复(3)
PHP中文网

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

PHPz

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

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

伊谢尔伦

insertRowsAtIndexPaths: withRowAnimation 应该是你需要的

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号