这是我的代码。我有条件地设置了高度限制。当我重新加载整个表时它运行良好但不适用于reloadRowsAtIndexPaths
id superView = btn.superview.superview;
NSIndexPath *indexpath = [tbl indexPathForCell:superView];
AddYardTicketItemCell *cell = [tbl cellForRowAtIndexPath:indexpath];
if (cell.constantViewHeight.constant == 0) {
cell.constantViewHeight.constant = 130;
}
else
{
cell.constantViewHeight.constant = 0;
}
[cell layoutIfNeeded];
[tbl reloadRowsAtIndexPaths:@[indexpath] withRowAnimation:UITableViewRowAnimationNone];
答案 0 :(得分:2)
更改一个单元格的高度需要tableView
移动以下所有单元格。所以我猜这就是为什么reloadRowsAtIndexPaths
不适合你的原因。尝试改变:
[tbl reloadRowsAtIndexPaths:@[indexpath] withRowAnimation:UITableViewRowAnimationNone];
为:
[tbl beginUpdates];
[tbl setNeedsDisplay];
[tbl endUpdates];
答案 1 :(得分:0)
尝试添加委托方法heightForRowAtIndexPath,而不是在cellForRowAtIndexPath中提供高度.Reload将起作用。这是正确的做法。
答案 2 :(得分:0)
在故事板中设计单元格时,应用所有约束,即应用所有必需的约束:顶部,底部,左侧和右侧,以便可以根据内容自动计算单元格的高度。
self.tableView.rowHeight = UITableViewAutomaticDimension;
self.tableView.estimatedRowHeight = 44.0;