iOS 触发单格 tableView:heightForRowAtIndexPath:
Posted
技术标签:
【中文标题】iOS 触发单格 tableView:heightForRowAtIndexPath:【英文标题】:iOS trigger single cell tableView:heightForRowAtIndexPath: 【发布时间】:2013-10-09 09:51:11 【问题描述】:我有一个包含 200-300 个不同高度的单元格的表格 + 一个包含 UITextView 的单元格(这样的表格用于读取和发送消息)。我需要在输入文本时动态调整单元格(包含 UITextView)的高度。我使用下一个代码来触发tableView:heightForRowAtIndexPath:
[tableView beginUpdates];
[tableView endUpdates];
但这会触发对所有行调用tableView:heightForRowAtIndexPath:
。如果表有很多行,这会降低性能。另一种方法可能是使用UITableView reloadRowsAtIndexPaths:
方法,但这会导致键盘消失(UITextView 退出第一响应者)。
是否可以仅针对单行触发调用tableView:heightForRowAtIndexPath:
,或者是否有任何其他方法可以动态调整表格单元格的大小?
【问题讨论】:
尝试覆盖 textField:shouldChangeCharactersInRange:replacementString: 函数并在那里相应地设置单元格? (只要确定你知道你正在编辑哪个单元格。)你能告诉我你对文本字段的使用吗?或许我可以给你一个更好的答案。 @TotumusMaximus 你愿意在textField:shouldChangeCharactersInRange:replacementString:
内部做什么?我使用 UITextView 输入文本:) 它是 UITableViewCell.contentView 的子视图
【参考方案1】:
要仅重新加载某些行,请使用:
NSArray *array = [NSArray arrayWithObject:indexPath];
[self.tableView reloadRowsAtIndexPaths:array withRowAnimation:UITableViewRowAnimationNone];
【讨论】:
以上是关于iOS 触发单格 tableView:heightForRowAtIndexPath:的主要内容,如果未能解决你的问题,请参考以下文章