2012-02-25 127 views
4

我正在開發一個像twitter客戶端iOS版本的項目。在設計tableview時,每個單元格都會改變高度以適應其內容(tweet)。在twitter類客戶端重用UITableViewCell(每個客戶端的自定義高度)

但是我遇到了一個問題:當前屏幕的單元格高度工作正常,但向下滾動時,新單元格會重用舊單元格的高度。

+1

基於必須出現在單元格中的內容,您是否在'heightForRowAtIndexPath:'中設置了單元格的高度? – jonkroll 2012-02-25 01:21:52

+0

@jonkroll是的,我已經做到了。我想知道resue單元格的高度是多變的嗎? – ericyue 2012-02-25 02:08:31

+2

月光是正確的。無論重用單元的高度如何,都無關緊要。你想使用委託方法'heightForRowAtIndexPath'。如果它不改變高度,那麼你做錯了什麼。如果你想要更好的答案,分享一些代碼。 – dbrajkovic 2012-02-25 06:58:55

回答

3

是的,表編程是模型 - 視圖 - 控制器方法真正有用的地方。如果你在tableView:didDeselectRowAtIndexPath:之類的地方改變你的細胞高度,你可能會感覺它有效 - 但事實並非如此。你可以在這個方法中做的是修改你的數據並重新加載表(或其中的一部分)。

正如在評論中提到以上,你必須:

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

爲每個單元格正確的高度

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 

提供正確的觀點(小區)Whenewer你想要進行一些更改,您應該修改model(或保留您的內容相關數據的適當對象)中的數據,然後調用其中一個UITableView's reload部門首長,可能是:

- (void)reloadData 
- (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation 

Apple的文檔可以是稀缺的(雖然我認爲這是相當業餘體校): 這將是基本環節爲您提供:

UITableView Class Reference

UITableViewDataSource Protocol Reference

UITableViewDelegate Protocol Reference

Table View Programming Guide for iOS