我有一个关于UITableViewCell和UICollectionviewCell的一般性问题。
我需要为每个单元格下载一个文件,所以当我创建一个单元格时我会创建一个后台操作,但是用户可以滚动tableview / collectionview,这样一个单元格可以被回收用于其他行。
我可以在“prepareForreuse”方法中中断后台操作,但这有点烦人,因为如果操作是99%,则需要重新开始下载。所以我决定维持后台进程,但我需要一种方法来“识别”当backgorund线程结束时,单元格与它开始时不一样。
抱歉,如果问题不是很清楚。感谢
答案 0 :(得分:1)
我不认为这是最好的方法,将后台任务与单元格链接,然后处理重用。
您应该在创建单元格时创建任务,并使用索引路径来标识应该处理任务结果的单元格。
通过这种方式,您不会终止任何任务,也可以检查您的任务是否已完成,以便在用户滚动表格视图时不会再次启动。
答案 1 :(得分:0)
您是否可以提供有关如何执行后台操作的详细信息以及如何通知单元格完成后台操作? (代码!)
编辑:
您还可以使用单例管理所有后台操作,为每个单元分配一个唯一标识符,以便操作是唯一的。然后继续检查cellForRowAtIndexPath:如果在后台管理器中有一个带有单元标识符的项目,则检查其内容。 是的,标识符可以是indexPath,正如danypata所说(其他答案)