【问题标题】:Calling reload data while scrolling on UIScrollView在 UIScrollView 上滚动时调用重新加载数据
【发布时间】:2012-07-09 00:50:29
【问题描述】:

我正在实现一个 UIScrollView,它的行为主要类似于 UITableView,它更高级一些.. 但使用的大多数 API 都是相同的签名.. cellForRowAtIndexPath.. 等等。首先在人们开始讨论为什么不直接使用UITableView,我只能说我不能。原因相当复杂,但这是已经做出的决定。

现在的问题是我正在实现无限滚动,基本上当我向下滚动并且我处于完整 contentHeight 的 65% 时,我正在向后端发出异步请求以获取更多数据并将其添加到数据源,然后调用重载数据。问题是如果我在用户滚动时调用 reloadData,它不会提供非常流畅的滚动体验。那么解决这个问题的最佳方法是什么?我还注意到 reloadData 基本上刷新了整个表格视图(在本例中是我的滚动视图)。在我的表格视图单元格中,我正在为 UIImage 设置动画以淡入。因此,当调用 reloadData 时,已经呈现的图像再次淡入,这有点烦人。 我该如何避免这样的事情?

有什么提示和技巧吗?

【问题讨论】:

  • 您为什么要复制 Apple 的努力来设计您自己的 UITableViewUITableView 类继承自 UIScrollView,因此无论您可以使用滚动视图做什么,都可以使用 UITableView
  • 我正在做类似于 iOS 6 中的 UICollectionView 的 smtg,并且我支持 iOS 5,所以我不能使用 UITableView。这是我现在能想到的最短答案,为什么我不使用 UITableView

标签: iphone objective-c ios ipad


【解决方案1】:

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

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

【讨论】:

  • 我也是这么想的,不过好像有点老套
  • 黑客?无论如何,您都要重新创建一个 tableview ;)
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-18
      • 1970-01-01
      相关资源
      最近更新 更多