设置特定UITableViewCell的高度 - iOS

时间:2014-05-02 11:57:10

标签: ios objective-c uitableview

我想知道如何设置特定 tableview单元格的高度。我知道有一个委托方法来设置创建表时每个单元格的高度,但我想设置特定单元格的高度。

我有一个这个单元格的引用插座:

@property (weak, nonatomic) IBOutlet UITableViewCell *addBillEventPersonCell;

我想做的是:

self.addBillEventPersonCell.height + 300

我不想更改高度一次但更多次因为用户可以在按下按钮时向单元格添加更多内容。

谢谢,

1 个答案:

答案 0 :(得分:2)

你没有任何其他选择,

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
if (indexPath.row == yourRow)
return dynamicHeight;

return height;
}

并使用beignUpdates和endUpdates来保持平滑。

编辑: 表视图将每次重复使用单元格,创建的单元格数量基于您在heightForRowAtIndexPath中给出的高度:并且它将在创建或重用时调用每个单元格。

最初在cellForRowAtIndexPath中,dequeueReusableCellWithIdentifier:方法中不会有任何单元格。

第一个表视图将从cellForRowAtIndexPath:获取特定行和单元格的高度。 一旦创建并返回它,表视图将呈现视图并将其添加到可见单元格数组中。调用cellForRowAtIndexPath:直到它填充其边界内的单元格。

下次滚动表格视图时,隐藏在屏幕上的单元格将添加到可重复使用的数组中。

来自屏幕下方的单元格是离开屏幕或表格视图边界的单元格。因此,表视图需要动态地为每个单元格设置高度。

单元格渲染完全基于每个单元格和表格视图边界的高度。

动态计算行高并重新加载问题的表格视图。

[yourTableView beginUpdates]; 
[yourTableView reloadRowsAtIndexPaths:indexPath withRowAnimation:animation];
[yourTableView endUpdates];

希望这会对你有所帮助。