我正在创建一个内容无限的UIScrollView,例如包含事件的日历。我正在使用REST调用从后端获取事件。
我想知道是否有人有一个模式/大块的代码限制:
何时获取更多数据 以及
获取更多内容
很容易调整。
例如,我想尝试抓取事件30天(15前锋和15后退),当用户向前滚动10天(距离限制5天)时,我想再提前30天,这意味着我现在有60天了。
由于
答案 0 :(得分:1)
使用滚动视图(无论是UIScrollView
还是UITableView
,这可以帮助您进行内存管理 - 卸载不可见的内容),您可以使用scrollViewDidScroll:
委托方法和contentOffset
属性,用于检查用户/已滚动到的位置以及它是否接近您当前拥有的数据的末尾。您使用的算法取决于滚动视图中每个项目/日的高度。结合contentOffset
,您可以告诉用户滚动到哪一天。
答案 1 :(得分:0)
我自己制作了一个简单的方法。
我的模型中有一个带有日期,numberOfDaysToFetch和限制的void方法。 numberOfDaysToFetch可以是90,限制可以是30。
当滚动视图滚动浏览视图(每个视图代表一天)时,我会调用每天可见的方法。
如果当天的数据不存在于本地,或者当天的数据接近于限制(30),而不是本地存在的数据,则该方法将调用服务来获取数据(异步),例如从最新的日期和numberOfDaysToFetch转发。
这意味着该方法将首先获得6个月的数据。 3个前锋和3个后退。向前滚动2个月时,将获取3个月的数据。
每当从服务收到响应时,收到的数据都会存储在本地,并且会抛出通知,并且会调用方法来更新滚动视图中的视图。
我现在可以将限制和numberOfDays调整到最符合网络服务性能的范围。