当单元格为最后一个时,调整TabelView的单元格高度会影响尾随空单元格

时间:2014-01-24 05:40:30

标签: ios iphone uitableview

我目前正在使用以下tableView委托方法来调整单个单元格的高度:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    CGFloat height = 44.0f;
    if (self.selectedIndexPath && indexPath.row == self.selectedIndexPath.row){
        return height + 20;
    }
    return height;
}

当调整的单元格不是要显示的最后一个单元格时,此功能正常工作。但是,如果它的最后一个单元格,该函数也会对所有尾随空单元格的高度产生负面影响,如图所示:

不是最后一个单元格(选择用户“bansvsiena”)

enter image description here

最后一个单元格(选择“newregistant” - 注意所有尾随单元格也具有相同的高度)

enter image description here

有没有办法解决这个问题?谢谢!

1 个答案:

答案 0 :(得分:2)

您有两种可能的解决方案:

  1. 为什么不从所有空单元格中删除分隔符?您可以将UITableView's分隔符样式设置为single line etched。这样做不会显示空单元格的分隔符。

  2. 设置self.selectedIndexPath值后(我想你是在tableView:didSelectRowAtIndexPath:中完成的),你正在重新加载你的表。您可以无效执行此操作并执行以下操作

    [_tblCredits reloadRowsAtIndexPaths:@[indexPath, self.selectedIndexPath] withRowAnimation:UITableViewRowAnimationNone];

  3. 由于您的所有单元格最初都将以44px高度创建,因此您不会重新加载表格,因此高度仅会因您在数组中传递的行而更改。这种方法更好地重新加载那些需要重新加载而不是整个表的行。

    希望这会有所帮助:)