我目前正致力于更新我自己没有制作的应用。
其中,有一个高度自定义的表视图,用于水平滚动图像,同时显示3个图像并启用分页。
问题是,有时它们看起来是白色的,我认为这是因为dequeueReusableCell
在它们仍然可见时返回它们。 (因此表视图重用了那些因为仍然可见的单元格,不应该重复使用。)
由于该表中通常没有很多单元格,我尝试使用一种解决方法,即每次分配和初始化一个新单元格而不是将旧单元格出列,到目前为止它工作正常(对于一个小表格)。 / p>
然而,这不是一个好的解决方案,我想以“正确”的方式做到这一点。
我不知道如何判断是否应将单元格放回队列。
我应该怎么做才能阻止细胞排队等待重复使用?
答案 0 :(得分:0)
如果您真的不想重复使用细胞,请按照您已经做过的方式进行。建议不要重复使用UITableViewCells
。重用技术可以节省内存。
但是当tableView的内存价格不高时,就这样做吧。 方式不是“禁用”重用。
这听起来像是因为tableView旋转了90°以实现水平滚动。所以iOS认为滚动的单元格数量为x
像素,并且必须位于屏幕外并且可以重复使用。这就是我的假设。
当你的更新解决iOS 6.0及更高版本时,我建议切换到UICollectionView
,这与UITableView
非常相似,但能够完全自定义流程布局(这是你要谷歌的术语)对)。
当我的推测是正确的时,另一个可能的解决方案可能是使用两个可重复使用的ID并交替它们,以便一个单元格获得足够的“空间”来滚动:
if([indexPath row] % 2 == 0) {
cell = [[CustomCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifierOne];
}
else {
cell = [[CustomCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifierTwo];
}
但是我真的如果我对这个猜测是正确的话,现在不要这样做:)