首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >iOS 集成TUIKit后撤回消息cell高度有问题?

iOS 集成TUIKit后撤回消息cell高度有问题?

原创
作者头像
小明同学接音视频
发布于 2020-12-25 10:12:08
发布于 2020-12-25 10:12:08
6900
举报

问题现象

使用TUIKit demo在群组内发一条较长的消息后撤回消息,cell的高度没变

解决方法

代码:

代码语言:objective-c
AI代码解释
复制

- (void)revokeMsg:(TUIMessageCellData *)msg
{
    V2TIMMessage *imMsg = msg.innerMessage;
    if(imMsg == nil){
        return;
    }
    NSInteger index = [_uiMsgs indexOfObject:msg];
    if (index == NSNotFound)
        return;
    [_uiMsgs removeObject:msg];
    
    if (index < self.heightCache.count) {
        [self.heightCache replaceObjectAtIndex:index withObject:@(0)];
    }
    

    [self.tableView beginUpdates];
    [self.tableView deleteRowsAtIndexPaths:@[[NSIndexPath indexPathForRow:index inSection:0]] withRowAnimation:UITableViewRowAnimationFade];
    TUISystemMessageCellData *data = [imMsg revokeCellData];
    [_uiMsgs insertObject:data atIndex:index];
    [self.tableView insertRowsAtIndexPaths:@[[NSIndexPath indexPathForRow:index inSection:0]] withRowAnimation:UITableViewRowAnimationFade];
    [self.tableView endUpdates];
    [self scrollToBottom:YES];
}

代码

代码语言:objective-c
AI代码解释
复制
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    CGFloat height = 0;
    if(_heightCache.count > indexPath.row){
        height = [_heightCache[indexPath.row] floatValue];
    }
    if (height) {
        return height;
    }
    TUIMessageCellData *data = _uiMsgs[indexPath.row];
    height = [data heightOfWidth:Screen_Width];
    [_heightCache insertObject:[NSNumber numberWithFloat:height] atIndex:indexPath.row];
    return height;
}

有没有效果记得给我反馈哦!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
iOS TableView多级列表
TableView多级列表的实现效果预览图 需求 TableView多级列表:分级展开或合并,逐级获取并展示其子级数据,可以设置最大的层级数,支持多选、单选、取消选择。 示例Demo:MultilevelList 思路 由需求和示意图可知,这些数据元素之间存在着一对多关系,很符合 数据结构与算法 -- 树形结构 的特征。那么,我们就用树形结构中的结点(Node)来作为存储和关联数据的模型(NodeModel)。 //每个结点信息,采用的是树状结构模型 关于树状结构不了解的可以看看
且行且珍惜_iOS
2019/03/04
2.4K0
iOS TableView多级列表
iOS·下载管理第三方框架初步调研
笔者目前比较关注的点是第三方框架中,删除指定下载任务的处理逻辑。 1.FGDownloader 地址 https://github.com/Insfgg99x/FGDownloader 移除任务示例 - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
陈满iOS
2018/10/09
1K0
iOS·下载管理第三方框架初步调研
UITableView实现QQ好友列表实战(动态插入删除Cell)
实现选择 网上大部分的教程,都是基于修改section的hearderView来实现的,但是看QQ的好友列表,style是grouped,显然不是使用section的header来处理。使用section的hearderView来实现的,十分简单,网上也有很多源码和教程,只要刷新一下dataSource然后调用就可以了。不在本次讨论的范围之内。 - (void)reloadSections:(NSIndexSet *)sections 这次我直接使用grouped的cell来做父cell,点击后展开相应的子
xferris
2018/06/01
1.4K0
iOS-UI控件之UITableView(四)- cell数据刷新
TableView- 数据刷新 数据刷新 添加数据 删除数据 更改数据 全局刷新方法(最常用) [self.tableView reloadData]; // 屏幕上的所有可视的cell都会刷新一遍 局部刷新方法 添加数据 NSArray *indexPaths = @[ [NSIndexPath indexPathForRow:0 inSection:0], [NSIndexPath indexPathForR
用户1941540
2018/05/11
1.9K0
iOS 二级菜单(UITableView实现)「建议收藏」
首先建立一个cell的类,用于存放cell中的内容 ,继承自uitableviewcell;
全栈程序员站长
2022/06/27
1.4K0
UITableView 编辑状态(删除、添加、移动)
----- TableView 删除和添加 ----- ** UITableView 编辑步骤 1.让 tableView 处于编辑状态 2.协议确定 1)确定 cell 是否处于编辑状态 2)设定 cell 的编辑样式(删除、添加) 3) 编辑状态进行提交** 开启编辑状态 //1.让 tableView 处于编辑状态 [tableView setEditing:YES animated:YES]; 如果
LeeCen
2018/10/11
1.7K0
UITableView 编辑状态(删除、添加、移动)
iOS开发UI篇--一个可扩展性极强的树形控件
树形控件在多列列表、多级菜单中使用比较常见,比如:国家-省份-城市 多级选择、学校-专业-班级 多级选择等等。然而IOS自带控件中并不存在树形控件,我们要在IOS开发中使用树形控件,通常需要自己扩展UITableView列表控件。 现在在这里开源一个自己写的高扩展性,高复用性的IOS树形结构控件。 支持无限极树形结构。 使用的是非递归方式。 代码简单易懂,扩展方便。 图片演示如下:
楚阳
2018/11/24
1.4K0
iOS开发UI篇--一个可扩展性极强的树形控件
UITableView进阶:常用代理方法及属性1. 常用属性2. 进阶的常用代理方法
在前面的文章里面已经写过了“UITableView基础”,所以这篇里面就不再对这里面的内容进行介绍。如果有幸去瞄一眼的,可以通过文章下面的拓展链接传送门去看。& 今天重点聊一聊UITableView中经常使用到的代理方法及属性。本文不是工具箱,所以不会将所有的属性和方法都写下来噢。只是总结经常使用到的。太完整的也记不住,真的是要用的时候临时翻一下.h文件看看也行。 1. 常用属性 1.1 分隔线属性 属性名称 数值 作用 separatorStyle UITableViewCellSeparatorStyl
stanbai
2018/06/28
1.3K0
ios5开发-UITableView开启编辑功能
该例子添加UITableView编辑功能 具体功能如下 功能很简单但很实用  @implementation AppDelegate @synthesize window = _window; @s
阿新
2018/04/12
8520
ios5开发-UITableView开启编辑功能
编码篇-一个商品录入时的UITableCell的总结
我们都知道iOS的UITableView有自带的 左滑动删除的方式,此中方式中,不论是删除数据源,还是删除对应的Cell都是很简单的。可是有时候,产品不是通过滑动删除的,而是点击Cell上的删除图标。本文就是小结一下,商品录入时 UITableViewCell的使用。
進无尽
2018/09/12
5410
编码篇-一个商品录入时的UITableCell的总结
iOS中表视图(UITableView)使用详解
- (instancetype)initWithFrame:(CGRect)frame style:(UITableViewStyle)style;  
珲少
2018/08/15
1.6K0
UITableView增加和删除、移动
1、在控制器上添加一个UITableView,  暂时该UITableView控件变量名命名为为tableView, 设置控件代理,实现控制器的UITableViewDataSource, UITableViewDelegate协议;
tandaxia
2018/09/27
2.1K0
UITableView增加和删除、移动
iOS开发之表视图爱上CoreData
  在接触到CoreData时,感觉就是苹果封装的一个ORM。CoreData负责在Model的实体和sqllite建立关联,数据模型的实体类就相当于Java中的JavaBean, 而CoreData的功能和JavaEE中的Hibernate的功能类似,最基本是两者都有通过对实体的操作来实现对数据库的CURD操作。CoreData中的上下文(managedObjectContext)就相当于Hibernate中的session对象, CoreData中的save操作就和Hibernate中的commit,还
lizelu
2018/01/11
2.5K0
iOS开发之表视图爱上CoreData
IOS开发:教你实现手机直播系统平台评论功能效果
每当有人进入房间、评论、送礼物、第一次点赞直播消息时,消息列表都要及时显示并有从下往上滑动的效果。效果如下:
布谷鸟网络科技
2019/03/13
2.3K0
IOS开发:教你实现手机直播系统平台评论功能效果
iOS中CoreData数据管理系列四——进行数据与页面的绑定
    在上一篇博客中,我们讨论了CoreData框架中添加与查询数据的操作,事实上,在大多数情况下,这些数据都是由一个UITableView表视图进行展示的,因此,CoreData框架中还未开发者提供了一个类NSFetchedResultsController,这个类作为桥接,将视图与数据进行绑定。
珲少
2018/08/15
8430
iOS中CoreData数据管理系列四——进行数据与页面的绑定
iOS中runtime的简单用法——动态绑定
先说需求:在tableView中每一行有一个删除按钮,点击删除当前行。(很多项目都会用到吧) 写一段废话:写例子的时候一直想找一个大家常用的功能做,但当这个例子写完我又犹豫要不要传上来,原因是对于这个功能,其实有其他更好的方法解决,其中我代码中的(方法一)就是其中一个不错的解决方案。可是如果你细心会发现,runtime有个很大的好处就是你不需要再费劲找目标对象了。只需要 1 绑定。2 取出。用法简单又霸道... 代码: #import "ViewController.h" #import "SGMy
Raindew
2018/06/14
1.2K0
ios 开发常用技巧
1.TableView不显示没内容的Cell怎么办? self.tableView.tableFooterView = [[UIView alloc] init]; 2.自定义了leftBarbut
honey缘木鱼
2018/06/13
6480
iOS UITableView获取特定位置的cell
一、tableView双级联动 [菜单栏联动.gif] [UITableView双级联动.gif] 以上两种效果比较类似,实现的关键在于都是需要获得在滑动过程中滑动到tableView顶部的cell的indexPath。 方案一:获得当前可见的所有cell,然后取可见cell数组中的第一个cell就是目标cell,再根据cell获得indexPath。代码如下 - (void)scrollViewDidScroll:(UIScrollView *)scrollView{ if (scrollV
且行且珍惜_iOS
2018/05/23
5.2K5
iOS AutoLayout全解
AutoLayout简介 Autolayout是一种全新的布局技术,专门用来布局UI界面的,用来取代Frame布局在遇见屏幕尺寸多重多样的问题。Autolayout自iOS 6开始引入, 但是由于X
xiangzhihong
2018/02/06
5.3K0
iOS AutoLayout全解
用reloadRowsAtIndexPaths刷新单个cell 跳动问题
一个很常见的需求就是在一个cell上点赞,评论等操作时,需要刷新单个cell对象,常用的方法即为:
honey缘木鱼
2019/07/26
4.1K0
相关推荐
iOS TableView多级列表
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档