Ios UITableView:渲染单元格计数

Ios UITableView:渲染单元格计数,ios,uitableview,Ios,Uitableview,我设计了UITableView,它可以显示大高度的自定义单元格(高度几乎等于屏幕的高度)。现在我得到了以下行为:只有当tableview停止滚动时,下一行才开始渲染(我可以看到CellForRowatineXpath正好在此时调用它)。它会导致屏幕出现一段时间的空白,这很烦人。 TableCell初始化不需要任何东西(~0.0000002s),因此它不会成为问题。现在的问题是:有没有办法强制UITableView渲染一些不可见的单元格?再加5个。在这种情况下,试着想出一些逻辑来计算下一个单元格将

我设计了UITableView,它可以显示大高度的自定义单元格(高度几乎等于屏幕的高度)。现在我得到了以下行为:只有当tableview停止滚动时,下一行才开始渲染(我可以看到CellForRowatineXpath正好在此时调用它)。它会导致屏幕出现一段时间的空白,这很烦人。
TableCell初始化不需要任何东西(~0.0000002s),因此它不会成为问题。现在的问题是:有没有办法强制UITableView渲染一些不可见的单元格?再加5个。

在这种情况下,试着想出一些逻辑来计算下一个单元格将要绘制的时间。然后显式调用
cellforrowatinexpath
,这样,单元格的
drawRect
将在它出现之前被调用

一个选项是调用
[yourTableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:indexPath.row+1 Instition:indexPath.section]
在用于tableView的
scrollViewDidScroll
中。使用
visibleCells
将是一个很好的选择。这里的indexPath.row和indexPath.section可以来自您声明的NSIndexPath对象,并在
cellForRowAtIndexPath
中设置

但我会事先告诉你,这只是一个黑客,不能说这是一个好的做法


编辑:每次调用
cellforrowatinexpath
时,可以显式将
CGFloat
设置为当前表偏移量,并在表滚动时将此值与当前偏移量进行比较。如果当前偏移量即将达到此值+cellHeight(如果未存储,则使用
heightforrowatinexpath
显式获取单元格高度),然后调用您的
单元格以获得RowAtIndexPath

是否使用可重复使用的单元格?抱歉,忘了提及。是的,可重复使用我无法重现此行为。您是否可以共享一些代码?您是否考虑过使用滚动视图而不是表格,在表格中可以预先加载下一个视图,例如预加载当前disp的上一个和下一个视图分层视图…只是一个想法。是的,我考虑过…但你不认为它不是很琐碎,实际上UtableView实现了你所描述的建议,但似乎是错误的。我试图复制,但没有成功:CellForRowatineXpath的显式调用不会强迫UtableView推送新的单元格。在这种情况下,我不确定你是否您的单元格是可重用的。请尝试在
drawRect
中放置一个
NSLog
,查看是否重新绘制了已渲染的单元格(向上滚动)。如果它们再次生成日志,则意味着它们没有被重用。如果它们实际上被重用,很抱歉,我没有想法。