2012-09-03 39 views
2

我有一个xib,UITableView(样式:分组)和几个UITableViewCells也被连接成一个插座集合。UITableViewCell神秘地改变高度

我以与Table View Programming Guide (The Technique for Static Row Content)中描述的非常相似的方式从tableView:cellForRowAtIndexPath:返回这些单元格。

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

cellForRowAtIndexPath对于该确切的行,返回出口集合中的正常单元格之一或特殊单元格(取决于标志)。

heightForRowAtIndexPath也需要适当的单元格的高度,并使用相同的'逻辑'返回它,我已NSLogged它死亡;

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

我上传了一个示例项目只有这样:http://www.mediafire.com/?sc22v0c6w11b4l6

回答

1

更换:

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

通过

return 30; 

解决您的问题。

我认为你的大单元的重绘修改了整个表的大小,并且出于某种原因重新计算了第一个和最后一个单元的大小。

+0

是的,谢谢,我只是发现了同样的事情。然而,这仅仅是一个有很多具有自定义高度单元的真实项目的小测试案例。如果这是解决方案(这可能意味着错误报告的顺序,或许?),我想我必须将每个初始高度存储在某个地方并重新使用它们,或者至少要求返回时的情况高度是第一行还是最后一行... – figha

+0

为什么不使用Storyboard和自定义单元格? – Resh32

+0

无法使用storyboard,客户端要求提供iOS 4.x兼容性:/ – figha

0

当你tableViewStyle进行分组此问题仅发生......所以,你既可以使用普通样式或返回硬编码值

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

    return self.bigCell.frame.size.height; 

} 

else{ 

    return 44; 

}