2012-09-03 35 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; 

}