在UIScrollView上滚动时调用重新加载数据

时间:2012-07-09 15:24:15

标签: iphone objective-c ios ipad

我正在实现一个UIScrollView,其行为大致类似于UITableView,稍微高一点......但是大多数使用的API都是相同的签名.. cellForRowAtIndexPath ..等。首先在人们开始攻击之前为什么不使用UITableView,我只想说我做不到。原因相当复杂,但这是一个决定。

问题是现在我正在实现无限滚动,基本上当我向下滚动并且我达到完整内容的65%时我正在向后端执行异步请求以获取更多数据并将其添加到数据源然后调用reloadData。问题是,如果我在用户滚动时调用reloadData,则无法提供非常流畅的滚动体验。那么解决这个问题的最佳方法是什么?另外我注意到reloadData基本上刷新了整个表视图(在这种情况下是我的滚动视图)。在我的表格视图单元格中,我正在设置要淡入的UIImage。因此,当调用reloadData时,已经呈现的图像再次淡入,这有点令人讨厌。 我该如何避免这些事情?

任何提示和技巧?

3 个答案:

答案 0 :(得分:3)

如果您仍在处理此问题,请查看PSTCollectionView。它的工作方式与UICollection视图完全相同,但支持iOS 4.3的后退。

答案 1 :(得分:0)

如果不知道为什么需要创建类似于tableview的自定义视图,很难回答。如果您有开发者帐户,则可能需要根据tableview检查新的iOS 6视图。不确定我是否可以在NDA下更多地谈论它。

对于UIImage淡入淡出,如何标记显示的每个UIImage,然后在重新加载数据或调用淡入淡出语句时进行检查。只淡化未标记为已呈现的图像?

答案 2 :(得分:0)

在新的iOS 6.0中,有新的控制器调用UIContainer视图,它类似于UITableview,但我们也可以用它设置多个列。

该控制器的委托方法与UITableview中的委托方法几乎相同。如果您有类似的要求,可以使用该控制器。