2012-08-11 78 views
0

我在我的項目中使用CustomTableCell。我可以看到「dequeueReusableCellWithIdentifier」在方法「cellForRowAtIndexPath」中返回一個有效的單元格,就像它應該例如每當表被重新加載時一樣。dequeueReusableCellWithIdentifier在didSelectRowAtIndexPath方法中返回nil

在CustomTableCell中,我有一些圖像可以重複使用,無需再次下載。然而,每當我在「didSelectRowAtIndexPath」委託方法內使用「dequeueReusableCellWithIdentifier」時,我都會得到「零」。

原始表格未被銷燬。該表是類對象,我可以看到它與在「didSelectRowAtIndexPath」參數中收到的tableView相同。

此行爲與我的項目中使用tableview的out viewcontrollers一致。

我正在使用ARC。任何想法可能是錯的?

謝謝!

+2

你爲什麼試圖在didSelectRowAtIndexPath中出列一個單元格? – Till 2012-08-11 20:56:21

+0

我從「didSelectRowAtIndexPath」調用其他ViewController,我想傳遞一些在CustomCell中異步獲取的數據。 – bneupaane 2012-08-11 21:03:57

+0

我同意Till。你的設計有缺陷。 – 2012-08-11 21:05:03

回答

2

這個問題有點含糊,但我相信你只是試圖從「didSelectRowAtIndexPath」中訪問你的自定義單元格。如果是這種情況,那麼你應該利用:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    CustomTableCell *myCell = (CustomTableCell*)[tableView cellForRowAtIndexPath:indexPath]; 
} 

然後,你可以自由訪問你想要的自定義單元格的任何部分。

如果您的好奇:

「dequeueReusableCellWithIdentifier」被用於通過重新使用已經「移動」超越可見範圍內的表格單元,以減少對象分配&解除分配的量。即如果您有一個包含1000個單元格的表格,但是在任何給定時間只有10個單元格可見。 〜10個細胞將被創建並重復使用。因此,當調用dequeueReusableCellWithIdentifier時,會將這些單元格中的一個拉出當前未被使用的單元格堆棧,或者在堆棧爲空時創建一個單元格。

+0

完美。這對我有用。感謝分享。 – bneupaane 2012-08-11 21:23:07