【发布时间】:2014-07-14 23:56:02
【问题描述】:
我使用UICollectionView + AFNetworking 2 从网络服务异步加载图像。它工作得很好。但是,如何实现自动滚动(当用户到达或接近页面底部时,调用 API 以获取更多单元格)。
我看过很多示例,但似乎没有最佳做法。例如,一个教程建议scrollViewDidScroll,但每次滚动视图时都会调用它。这是正确的实现方式吗?
PS。我正在用 Swift 编写代码。
这是我的单元格创建代码:
func collectionView(collectionView: UICollectionView!, cellForItemAtIndexPath indexPath: NSIndexPath!) -> UICollectionViewCell! {
let cell = collectionView.dequeueReusableCellWithReuseIdentifier(cellIdentifier, forIndexPath: indexPath) as UICollectionViewCell
let offer = self.offers[indexPath.row]
var cellImageView = cell.viewWithTag(100) as UIImageView
let requestURL = NSURLRequest(URL: offer.largeImageURL)
cellImageView.setImageWithURLRequest(
requestURL,
placeholderImage:placeholderImage,
success: {
(request:NSURLRequest!, response:NSHTTPURLResponse!, image:UIImage!) in
cellImageView.image = image
},
failure: {
(request:NSURLRequest!, response:NSHTTPURLResponse!, error:NSError!) in
NSLog("GET Image Error: " + error.localizedDescription)
}
)
return cell
}
【问题讨论】:
-
我不久前发布了这个。它不是 Swift,但也许这就是您想要实现的目标。 stackoverflow.com/questions/5137943/…
-
感谢眼球。我能够检测到用户何时滚动到屏幕底部,但每次到达屏幕底部时都会检测到它,这可能会在 Web 服务返回任何结果之前发生多次,从而再次调用 Web 服务。我对更全面的解决方案感兴趣,包括如何跟踪应用程序中的分页偏移量、何时调用 afnetworking、如何指示屏幕正在重新加载。
-
我会在
-scrollViewDidScroll:中进行。即使在滚动时在每一帧都调用它,性能也不应该成为问题。只需检查您是否接近底部(将偏移量与内容高度进行比较)并在需要时加载新图像。
标签: ios objective-c swift uicollectionview afnetworking