UITableView重新加载问题

问题描述:

我在重新加载UITableView非常复杂的问题!UITableView重新加载问题

我有一个UITableView,其中我持续(接近10秒),从服务器检索数据并显示我的UITableView中包含自定义单元格的数据。问题是,当用户(即我)滚动通过UITableView时,它会因为indexOutOfBound错误而崩溃,因为我从服务器获取数据,NSMutableArray将清除并重新填充数据。

我也尝试了BOOL变量设置YESNOscrolling delegates。在这种情况下,如果我滚动UITableView它将删除滚动方向的单元格,10秒后它将显示所有单元格的数据。

但我想要的是,如果用户滚动UITableView没有创建的单元格应该隐藏! scrollEnabled不是一个解决方案。

请帮我一把!

谢谢:)

+0

我怀疑发生了什么事情是您在更新表格视图的同时滚动出界。你需要在滚动的时候锁定表视图的更新(所以你不能超出界限),或者你只需​​要在上次更新的时候允许滚动到表格中的最大条目数滚动完成之前的任何单元格或条目)。无论哪种方式,这种更新非常棘手,这听起来像是一个有趣的问题,你需要解决。 –

+0

确保只有在所有数据准备就绪后,行数和行数才会更改。 – Tom

这是一个线程不安全的代码问题。数据源在被主动使用时被修改。

一个安全的解决方案是将所有数据解析到某个数据库(sqlite/Coredata)并从数据库重新加载表数据源并为表调用reloadData。这种方式在你使用数据源数组的时候 - 它不会是空的。

好运

+1

我前几天遇到了这个问题,是的,最好的办法是在从服务器检索时不更新实际的数据源。制作单独的数据源,将服务器值存储在其中,然后将单独的数据源分配给表的数据源。操作应尽可能接近原子。 – Tanaki

+0

您提供的解决方案出现在我的脑海中!但是如果我不会连续读取数据,这可能是明智的!:) – Hemang

如果indexOutOfBound意味着你必须在你指定的检查numberofrow的是比小区forrowatindex的我们的阵列接收更多。所以检查一下。