2012-03-01 73 views
0

這聽起來可能是一個新手的問​​題,但是我是新來的iOS開發,UITableView dequeueReusableCellWithIdentifier是唯一的還是不是?

我想明白了,當我應該使用的唯一標識符細胞時不

- (id)dequeueReusableCellWithIdentifier:(NSString *)identifier 

其實在很多我遇到了代碼片段,其中標識符不是唯一的。

但在我的練習中,爲了保持UITableViewCells的順序,我使用了唯一標識符,否則當我向上和向下滾動UITableView時,順序是混合的。

那麼請幫我理解可重複使用單元的概念,不應該每個單元都有唯一標識符嗎?

由於提前,

回答

0

我相信我已經得到了我的問題的答案。感謝Aaron的問題。 我總是嘗試在同一視圖中初始化每個單元格一次(當然,如果它沒有在該視圖中編輯)。我這樣做是爲了提高性能並平滑表視圖的滾動。 區別在於 - 現在我知道它是如何工作的。如果我理解正確,單元格標識符使得單元格保持唯一性,這種方式可以實現緩存該信息然後將其放到正確位置(由於唯一標識符)。

謝謝你們!

2

只應針對不同類型的小區使用不同的標識符。如果你的表格視圖具有不同類別的單元格,這可能是你的問題,或者你已經添加了子視圖到單元格不同的單元格中。

當使用標識符時,根據您的單元格考慮它可能包含任何先前呈現的單元格數據的數據,因此您需要確保代碼覆蓋該數據,最簡單的情況是cell.textLabel.text。

+0

我對所有單元格使用相同的類型,並且單元格的子視圖具有相同的類型。即所有單元格都有一個圖像和三個文本標籤。所有這些部分都不是空的。但滾動後我仍然有混合的單元格。 – jackal 2012-03-01 14:28:32

+2

@jackal:在'tableView:cellForRowAtIndexPath:'中,您是否每次都將正確的值分配給所有標籤和圖像?即使你離隊,你也需要設置這些。 – Aaron 2012-03-01 15:26:44

+0

@jackal:檢查Aaron在說什麼。另外,它可能是你模型的一個功能。你的數據如何存儲?你確定你的排序順序是一致的嗎? – sosborn 2012-03-02 00:19:06

0

始終嘗試在同一視圖中僅初始化每個單元格一次。我這樣做是爲了提高性能並平滑表視圖的滾動。不同的是 - 現在我知道它是如何工作的。如果我理解正確,單元格標識符使得單元格保持唯一性,這種方式可以實現緩存該信息然後將其放在正確的位置。

相關問題