我有一个Collection视图。当用户滑动集合视图并从Web服务响应重新加载整个集合表时,我需要调用Web服务。这是可能的,也是一种很好的方法。如果是这样,你能告诉我如何实现这一点。
答案 0 :(得分:2)
这可能吗
是的,这绝对是可能的。
一个好方法
可能不是。网络请求可能具有高延迟,这意味着您可能会在刷卡和用户看到新数据的那一刻之间出现延迟。如果您在用户滑动之前加载了新数据,那么您可能会获得更好的用户体验,这样您就可以毫不拖延地准备好了。
如何实现这个
首先阅读collection views。在一个小答案中解释你需要知道的所有内容是不可行的,Apple已经写了一整篇关于它的指南。
从您的问题中不清楚您是否意味着滑动与集合视图滚动的方向相同。让我们考虑两种情况,然后:
向与滚动相同的方向滑动:您不需要在此处进行任何工作以使集合滚动 - 集合是滚动视图。您应该让您的集合视图的数据源加载尽可能多的合理数据。当集合请求数据不可用的单元格时(或者当集合视图仅关闭到需要的数据不可用的单元格时),数据源应该请求更多来自网络服务的数据。
以直角向滚动方向滑动:例如集合视图水平滚动,滑动是垂直的。当您希望用户能够使用手势在不同数据集之间滑动时,您可以使用此类设置。使用手势识别器检测滑动,并使用手势动作告诉数据源切换数据集。然后告诉集合重新加载其单元格。您可以在此处使用-[UICollectionView reloadData]
方法,但您可能还希望使用-[UICollectionView scrollToItemAtIndexPath:atScrollPosition:animated:]
更改滚动位置。