这个问题与this one非常相似,但是那里没有答案,我不能在这个问题上发表评论或做任何事情,并且情况稍有不同。
我有自定义tableViewCell,其中包含一些自定义视图。此自定义视图中包含UIImageView和UIActivityIndicatorView,并且还附加了自定义加载程序类。当该视图首次出现时,它的图像被隐藏,activityIndicator正在动画,然后启动加载过程(图像从某个URL加载),当图像成功加载时,它出现在我的自定义视图中。 一切都很完美,但当我快速滚动tableView时,我有很多背景NSURLConnections工作是徒劳的。我还创建了一些方法来取消我的后台连接,但是当我需要它时我无法调用它们 - 当tableViewCell变为屏幕外时,没有方法被调用。我真的需要一些活动,所以我可以取消我的背景连接。有没有办法做到这一点?我真的不想检查tableViewCell是否仍然在每个连接中可见:didReceiveData:,这是非常蹩脚但目前它似乎是实现我需要的唯一方法。
答案 0 :(得分:2)
我的建议是在您的UITableViewCell prepareForReuse:
方法中取消您的网络请求。这很简单,也意味着如果单元格略微偏离屏幕然后重新打开,您将无法取消请求。 (当您返回要重用的单元格时,也可以在tableView:cellForRowAtIndexPath:
中执行此操作。)
您可能还想在快速滚动时考虑避免首先启动这些负载;您可以在scrollViewWillBeginDragging:
上停止加载并等待,直到从表视图中回复scrollViewDidEndDragging:willDecelerate:
,然后才能开始对可见单元格的实际URL请求。