iOS:tableView刷新闪烁问题解决
来源:互联网 发布:ipad能刷windows系统吗 编辑:程序博客网 时间:2024/05/16 09:30
我做的是直播消息系统,每当有人评论、送礼物、第一次点赞直播消息列表都要及时显示。就像这样
原来思路是这样的:图中红框是我们的消息列表,是一个tableView,每个消息是一个cell,每次接收到一条消息立刻添加到数据数组中,同时刷新tableView,滚动到底部。原来的代码是这样写的:
[chatDataArray addObject:chatModel]; [chatTable reloadData]; NSIndexPath *myIndexPath = [NSIndexPath indexPathForRow: chatDataArray.count - 1 inSection:0]; [chatTable selectRowAtIndexPath:myIndexPath animated:YES scrollPosition:UITableViewScrollPositionBottom];
但是这样写有一个很大的问题就是:每次接受到消息时添加到数据数组中,同时刷新tableView的时候,整个tableView会闪烁一下,这个问题困扰我好久不知道怎么解决,期间用过很多办法(先隐藏再刷新,异步刷新),踩了很多坑,都解决不了问题,分析闪烁的根源是因为刷新的是整个tableView,想想如果只刷新最后一行就好了,但是局部刷新的方法的前提是这行cell原来是存在的,但是这个直播消息是每次有新消息后有刷新列表,一个新的消息产生后伴随着一个新的一行cell(其实是没产生新的cell,有复用机制,这里打个比方,不要误解)。今天不知道怎么开光了,突然想到tableView还有一个insert的方法,一直不怎么用竟然把她忘了。
解决后的代码如下:[chatDataArray addObject:chatModel]; NSIndexPath *myIndexPath = [NSIndexPath indexPathForRow: chatDataArray.count - 1 inSection:0]; [chatTable insertRowAtIndexPath:myIndexPath withRowAnimation:UITableViewRowAnimationNone]; [chatTable selectRowAtIndexPath:myIndexPath animated:YES scrollPosition:UITableViewScrollPositionBottom];
新的接受的消息cell直接插入到最后一行,然后再自动滚动到底部。不闪了,哈哈,so easy!完美解决!请记住整个伟大的方法
- (void)insertRowsAtIndexPaths:(NSArray<NSIndexPath *> *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation;
希望这篇文章可以帮到你O(∩_∩)O
作者:IOSMan
链接:http://www.jianshu.com/p/8dd53afa526e
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
阅读全文
0 0
- iOS:tableView刷新闪烁问题解决
- ios tableview刷新
- iOS tableView上下拉刷新
- IOS控件TableView下拉刷新
- iOS tableView的刷新 笔记
- 解决TableView刷新指定行时闪烁的问题
- phonegap+jquery iOS画面跳转闪烁问题解决
- MFC中屏幕刷新闪烁问题解决方法总结
- List View在XP中闪烁刷新问题解决
- MFC中屏幕刷新闪烁问题解决方法总结
- IOS小技巧-tableview下拉刷新
- IOS控件 Tableview 下拉刷新,加载数据
- IOS控件 Tableview 下拉刷新,加载数据
- iOS tableView 自带的下拉刷新
- iOS UITableView(十一) tableView的下拉刷新
- ios tableview 刷新一行 或某几行
- iOS中tableview刷新某一行
- iOS刷新tableView某个cell或section
- Caffe之具体运行流程分析
- IT求职部分网站汇总
- spring-data知识点记载
- golang cannot assign to
- HDU 1719 Friend(规律)
- iOS:tableView刷新闪烁问题解决
- Construct2 游戏进阶制作
- 常用的正则表达式大全
- 素数筛
- VS2015静态编译libcurl(C++ curl封装类)
- Django中button的处理 & ajax提交数据时不走Form组件验证
- 经历(3)随笔
- 一维数组工具 OneArryasTools v1.1(doc生成正常)
- 编译nginx