从UITableView中删除单元格时调用heightForRowAtIndexPath

时间:2011-02-21 12:49:26

标签: iphone cocoa-touch uitableview

我正在调用heightForRowAtIndexPath来调整我的单元格。当我编辑我的表视图以删除单元格时,单元格的高度保持固定,因此单元格重叠,这不会产生非常吸引人的图像。我想知道在删除单元格时如何更改单元格的高度。

这是我目前的代码

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {

Favorites *favorite = [fetchedResultsController objectAtIndexPath:indexPath];
NSString *cellText = favorite.name;
UIFont *cellFont = [UIFont fontWithName:@"Helvetica" size:17.0];

CGSize constraintSize = CGSizeMake(280.0f, MAXFLOAT);

CGSize labelSize = [cellText sizeWithFont:cellFont constrainedToSize:constraintSize lineBreakMode:UILineBreakModeWordWrap];

return labelSize.height + 20;

}

任何帮助将不胜感激!感谢

2 个答案:

答案 0 :(得分:0)

- (void)tableView:(UITableView *)tableView commitEditingStyle: UITableViewCellEditingStyle)editingStyle 
       forRowAtIndexPath:(NSIndexPath *)indexPath 
{
    if (editingStyle == UITableViewCellEditingStyleDelete) 
    {
       [tableView reloadTable];
    }   
}

你可以改变一个告诉你想要正确高度的属性,并从heightForRowAtIndexPath读取它的值

答案 1 :(得分:0)

您的问题是,如果您的单元格中的标签numberOfLines为0(可能是您的单元格可以展开),那么当删除幻灯片时标签将再次展开,从而导致丑陋的重叠。一个有价值的替代方法是在删除幻灯片进入时截断文本。为此,您需要设置制作单元格时的行数。

cell.textLabel.numberOfLines = textLabelheight/textLabelFontSize;

您可能已经知道textLabelHeight和textLabelFontSize,因为您在调整单元格高度时已经解决了这个问题。