我正在尝试实现一个列表语言包,可以通过选择包含UIProgressBar的自定义UITableViewCell来下载。对于每个语言包,我想显示下载进度。我通过设置此委托setDownloadProgressDelegate:
来完成此操作。
除非将UIProgressBar移出可见区域,否则一切都很有效。这是有道理的,因为代理进度条被删除。我该怎么做才能阻止应用程序崩溃?如果进度条返回可见区域,如何显示进度条?
Hier是一张图片,可以看到它现在的样子。
THX
答案 0 :(得分:2)
我想你可以使用自己的一个类(甚至视图控制器)作为进度委托。在视图控制器中,您可以保存对当前正在使用的所有进度条的引用数组。您将为每个下载创建一个进度条并将其保存在数组中(因此该对象不会被销毁)。无论何时创建单元格,您现在都必须检查数组中是否有相应的进度条对象,而不是创建新对象。每当下载完成并且不再需要进度条时,您将从阵列中删除它。
请注意可能的多线程问题,如果有必要(例如,如果您的通知可以到达主线程之外的其他线程),请使用performSelectorOnMainThread:
更新进度条数组和进度条。