我有一个经典的分组UITableView,每个单元格内都有可编辑的UITextViews。这个文本视图可以是单行的,也可以是多行的,我希望单元格在用户书写和文本开始换行时增加其高度。
我的问题是:我需要重新加载整个表格来增加单元格的高度吗?没有其他方法了吗?
我已经搜索了很多,之前的答案和教程只是讨论了如何计算文本高度,如何实现heightForRowAtIndexPath……我已经知道的事情。我担心的是,为了实现我想要的,我将不得不计算高度,并在每次用户输入新字符时重新加载表格,我发现这并不是非常干净或高效。
谢谢。
发布于 2010-06-18 21:57:36
您不必总是重新加载整个表。相反,您可以只重新加载一行。
[tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:[NSIndexPath indexPathForRow:0 inSection:0]] withRowAnimation:UITableViewRowAnimationFade];
发布于 2011-01-14 23:18:20
[tableView beginUpdates];
[tableView endUpdates];
发布于 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];
}
https://stackoverflow.com/questions/3069339
复制相似问题