首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何动态调整UITableViewCell高度

如何动态调整UITableViewCell高度
EN

Stack Overflow用户
提问于 2010-06-18 19:56:44
回答 4查看 56.8K关注 0票数 58

我有一个经典的分组UITableView,每个单元格内都有可编辑的UITextViews。这个文本视图可以是单行的,也可以是多行的,我希望单元格在用户书写和文本开始换行时增加其高度。

我的问题是:我需要重新加载整个表格来增加单元格的高度吗?没有其他方法了吗?

我已经搜索了很多,之前的答案和教程只是讨论了如何计算文本高度,如何实现heightForRowAtIndexPath……我已经知道的事情。我担心的是,为了实现我想要的,我将不得不计算高度,并在每次用户输入新字符时重新加载表格,我发现这并不是非常干净或高效。

谢谢。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-06-18 21:57:36

您不必总是重新加载整个表。相反,您可以只重新加载一行。

[tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:[NSIndexPath indexPathForRow:0 inSection:0]] withRowAnimation:UITableViewRowAnimationFade];
票数 63
EN

Stack Overflow用户

发布于 2011-01-14 23:18:20

[tableView beginUpdates];
[tableView endUpdates];
票数 92
EN

Stack Overflow用户

发布于 2010-06-18 22:07:59

更具体地说,是的,你必须实现tableView:heightForRowAtIndexPath:来计算新的高度,然后按照rickharrison所说的做,并调用[tableView reloadRowsAtIndexPaths:withRowAnimation]。假设您的单元格可以有扩展的高度和正常的高度,并且您希望它们在点击时增长。您可以执行以下操作:

-(CGFloat)tableView:(UITableView*)tableView heightForRowAtIndexPath:(NSIndexPath*) indexPath 
{
    if ([expandedPaths containsObject:indexPath]) {
        return 80;
    } else {
        return 44;
    }
 }

-(void)tableView:(UITableView*) didSelectRowAtIndexPath:(NSIndexPath*) indexPath
{
    [expandedPaths addObject:indexPath];
    [tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
}
票数 27
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3069339

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档