UITableViewCell神秘地改变了高度

时间:2012-09-03 11:14:29

标签: ios objective-c uitableview cocoa-touch interface-builder

我有一个带有UITableView(样式:已分组)的xib,以及作为出口集合连接的xib上的一些UITableViewCells

我以tableView:cellForRowAtIndexPath:非常类似的方式从IBOutlet返回这些单元格。

然后我有另一个reloadRowsAtIndexPaths:withRowAnimation:单元格,具有不同的高度,以及一个切换标志的按钮,并且总是重新加载同一行(cellForRowAtIndexPath)。

对于该确切行,

heightForRowAtIndexPath返回来自outlet集合的正常单元格之一或该特殊单元格(取决于标志)。

{{1}}也取适当单元格的高度并使用相同的“逻辑”返回它,我已将其记录为死亡;

现在发生的事情是每次按下按钮,第一行和最后一行将一个像素添加到它们的高度!任何人都可以想到发生了什么?

我上传了一个示例项目:Table View Programming Guide (The Technique for Static Row Content)

2 个答案:

答案 0 :(得分:1)

更换:

return (UIView *)[self.cells objectAtIndex:indexPath.row] bounds].size.height;

通过

return 30;

修复您的问题。

我认为较大单元格的重绘会修改整个表格大小,并且由于某种原因会将第一个和最后一个单元格重新计算为更大的单元格。

答案 1 :(得分:0)

仅当您的tableViewStyle已分组时才会出现此问题...因此您可以使用普通样式或返回硬编码值

if (indexPath.row == kBigCellRowNum && self.showTheBigCell){

    return self.bigCell.frame.size.height;

}

else{

    return 44;

}