2012-07-09 41 views
2

我正在实现一个UIScrollView,其行为大部分类似于一个UITableView,稍微高级一点..但大多数使用的API是相同的签名.. cellForRowAtIndexPath ..等人之前开始攻击为什么不使用UITableView,让我说我不能。原因相当复杂,但这是一个决定。在UIScrollView上滚动时调用重载数据

的问题是,现在我实现无限滚动,基本上当我向下滚动,我在全或contentHeight的65%,我做一个异步请求传递给后台获取更多的数据,并将其添加到数据源和然后调用reloadData。问题是如果我在用户滚动时调用reloadData,它不会提供非常流畅的滚动体验。那么解决这个问题的最好方法是什么?另外我注意到,reloadData基本上刷新整个表视图(在这种情况下,我的滚动视图)。在我的表格视图单元格中,我将UIImage动画化为淡入。因此,当reloadData被调用时,已经呈现的图像再次被淡入,这有点烦人。 我如何避免这样的事情?

任何提示和技巧?

+0

为什么你会重复Apple在设计自己的'UITableView'方面的努力? 'UITableView'类继承自'UIScrollView',所以无论你如何处理滚动视图,你都可以使用'UITableView'。 – dasblinkenlight 2012-07-09 15:50:39

+0

我正在做类似于iOS 6中的UICollectionView的smtg,并且我支持iOS 5,因此我无法使用UITableView。这是我现在可以提出的最短的答案为什么我不使用UITableView – xonegirlz 2012-07-09 18:46:53

回答

0

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

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

+0

我也想到了,但这似乎有点hacky – xonegirlz 2012-07-09 18:46:17

+0

哈克?无论如何,你还是要重新创建一个tableview;) – jarryd 2012-07-09 22:00:32

0

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

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

+0

iOS 6仍然处于NDA之下。 – jarryd 2012-07-09 22:01:40

3

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