首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >下载进度,单位:单元

下载进度,单位:单元
EN

Stack Overflow用户
提问于 2013-02-02 11:37:07
回答 1查看 1.8K关注 0票数 0

我正在尝试在UITableViewCell中开发一个进度视图。

在我的第一个实现中,我在计算单元中使用了AFHTTPRequestOperation和它的setDownloadProgressBlock:^

后来,我的目标变得更加复杂。我有一个显示不同内容(歌曲播放列表)的UITableView。同一首歌曲可能存在于多个播放列表中。当我开始下载一个播放列表中的歌曲并切换到另一个播放列表(其中也包含此歌曲)时,我希望看到与第一个播放列表中一样的下载进度。

我已经成功地让它工作了。在下载过程开始时,我在全局类中创建了一个进度视图。要在单元格上显示此进度视图,我只需使用addSubview removeFromSuperview。但我不喜欢这种方式,因为我必须在现有的进度视图之上添加进度视图(因为由于应用程序设计,每个单元格都有自己的进度视图)。

现在我使用另一种方法。当我显示单元格时,我将setDownloadProgressBlock:^设置为现有的进度视图。我工作得很好,但是当我打开另一个播放列表时,进度显示在另一首歌曲上。我敢打赌,这是因为我使用了可重用的细胞。

我有点厌倦了实现这个东西,有什么办法让它正常工作吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-02 14:09:16

您是对的,由于cell的重用,使用下载进度回调连接每个单独的cell是不合适的。为了解决这个问题,我将在你的Song对象中保存下载状态,当它被设置为YES时,开始观察一个通知。

代码语言:javascript
复制
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(progressDidUpdate:) name:kSongDownloadProgressUpdateNotificaton object:nil];

AFHTTPRequestOperation的进度回调块中,发送一个带有歌曲id标识符的name:kSongDownloadProgressUpdateNotificaton

在单个单元格的progressDidUpdate:中,识别其自身的更新进度,如果不是,则忽略它,如果是,则更新该单元格中的progressView。下载完成后,删除对通知的观察。

此外,您需要在Song对象中保存下载百分比数据,因为当UITableView调用cellForRowAtIndexPath时,Song将随时分配给另一个单元格,保存和恢复进度将使下载状态持久。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14658319

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档