2015-12-14 17 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

相关问题