2015-12-14 20 views
1

我在這裏閱讀了很多有關重複使用表格單元格的問題。測試dequeueReusableCellWithIdentifier:forIndexPath

  1. 我實現的UITableView的(斯威夫特)
  2. 在我的視圖控制器的viewDidLoad中()註冊這個類的子類(我使用的不是故事板)
  3. 和使用dequeueReusableCellWithIdentifier:forIndexpath中的tableView的 的cellForRowAtIndexPath

據我所知,這應該重用細胞。 但是,如果單元格被實際重用,那麼是否有辦法通過測試?例如在儀器中或通過在調試器中打印。

謝謝你的幫助!

+0

如果您在調試器中打印單元格,它應該給出單元格對象的地址,它會告訴您您是否正在處理同一個對象 –

回答

1

有很多方法可以做到這一點。

首先,你可以寫點東西來登錄initWithStyle:reuseIdentifier:。您將同時看到與屏幕上的單元格一樣多的日誌條目。

第二:你可以在cellForRowAtIndexPath以某種方式標記你的細胞。例如,單元格的標籤默認設置爲0。所以當你從dequeueReusableCell...得到一個單元格時,如果它有一個標籤,它等於0,那麼你將它設置爲別的。否則,你剛收到一個重用的單元格。您也可以將第一個單元格的標籤設置爲1,然後將第二個單元格的標籤設置爲2,這樣您還可以找出您使用的單元格的數量。你只需要跟蹤迄今爲止最大的標籤。

您也可以添加一些自定義屬性並以與標記相同的方式使用它。

另一種選擇是在調試器中打印單元格。正如@RichTolley在上面的評論中所建議的那樣。但在我看來,這不是很方便(手動比較指向每個單元格的指針)。

+0

我在自定義單元格的初始化中記錄了它(在調試器中打印)。我的屏幕上有15個單元格和16個日誌。數據源包含大約30個單元格。所以重用應該工作?!謝謝! – Netzer

+0

@Netzer,是的,看起來如此:)如果在滾動時日誌中沒有新記錄,它就可以工作。很高興我可以幫助:)請考慮upvoting /接受答案。祝你有個美好的一天) – FreeNickname

+0

@Netzer,謝謝:) – FreeNickname

1

最簡單的方法是在單元格中設置一個標記cell.tag = indexPath.row+1(添加一個防止設置默認0值)並設置斷點條件爲圖片上。如果標籤將不同於0斷點停止並在控制檯上打印標籤。 How to set condition breakepoint

相關問題