1

我目前正在更新我自己没有制作的应用程序。

在其中,有一个高度定制的表格视图,用于水平滚动图像,一次显示 3 张图像并启用分页。

问题是有时它们看起来是白色的,我认为这是因为它们dequeueReusableCell在它们仍然可见时被返回。(所以表格视图正在重用单元格,因为它仍然可见,不应该被重用。)

由于该表中通常没有太多单元格,因此我尝试了一种解决方法,即每次分配和初始化都是一个新单元格,而不是将旧单元格出列,到目前为止它工作正常(对于一个小表)。

但是,这不是一个好的解决方案,我想以“正确”的方式来做。

我不知道如何决定是否应该将单元格放回队列。

我应该怎么做才能阻止单元格排队等待重用?

4

1 回答 1

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];
}

但如果我的猜测是对的,我现在真的不知道:)

于 2013-08-19T13:18:03.640 回答