2011-04-12 182 views

回答

0

我不認爲你可以或你應該。 您需要從indexPath中確定將在相應單元格中顯示哪些數據,然後計算單元格所需的高度。

因此,您需要編寫一些代碼才能從indexPath獲取數據模型中正確的數據。

+1

這是錯誤的,你可以在這種情況下發送'tableView:cellForRowWithIndexPath'。 @user ...只是將它發送給錯誤的對象。 – XJones 2011-04-12 17:57:10

26

調用self(委託)而不是tableView本身。

id cell = [self tableView:tableView cellForRowAtIndexPath:indexPath]; 
+2

如果您的cellForRowAtIndexPath正在使用heightForRowAtIndexPath,那麼將始終存在無限遞歸。如果是這樣,你將不得不採取不同的設計方式。 – NWCoder 2011-04-12 17:47:32

+4

不是推薦的做法。 heightForRowAtIndexPath在cellForRowAtIndexPath之前被調用,出於某種原因,您應該能夠根據您擁有的數據計算高度。也不建議使用heightForRowAtIndexPath,除非您確實需要爲單元格設置不同的高度,因爲隨着數據集大小的增加,它會慢得多。 – Joe 2011-04-12 17:50:45

+4

@Joe:半不贊同。如果你可以很容易地計算高度W/O需要的細胞,那很好。有些情況下需要實例化單元格以瞭解它的高度。我有很多自定義單元格類,它們足夠複雜,無法計算子視圖的高度而無法計算高度。一些Apple例子也是這樣做的。 – XJones 2011-04-12 17:59:01

-4
uitableviewcell *ce=[self.view viewwithtag:indexPath.row]; 

它返回單元對象。

+0

這樣做只會使用該標籤創建單元格。另外請注意,這可能會對重複使用的單元有問題,因爲它們可能會在您查找它時出列。 – NWCoder 2011-04-12 21:11:30

2

使用func dequeueReusableCellWithIdentifier(identifier: String) -> AnyObject?UITableView
不要使用func dequeueReusableCellWithIdentifier(identifier: String, forIndexPath indexPath: NSIndexPath) -> AnyObject
可能原因heightForRowAtIndexPathcellForRowAtIndexPath之前調用這個方法使用索引路徑來執行基於表視圖單元格的位置的附加配置。但是,既然現在還沒有細胞,因此我認爲它會無限循環。