Ios 跟踪UITableViewCell动态

Ios 跟踪UITableViewCell动态,ios,Ios,我正在实现一个下载系统,我有一个包含核心数据元素的表视图 我希望用户按下手机上的下载按钮,系统将开始下载相关文件 我有我的下载库,可以通过委托方法进行通信和报告进度,我的问题是我不知道如何关联/正确地重新显示/更新可重用单元中的进度视图 下载库与NSURL一起工作,我可以将NSURL子类化,并附加一个表示核心数据实例的属性协议,但即使如此,保持UI逐单元更新的最佳方法是什么 我是否应该在代理每次收到事件时调用[self.tableView reloadData]?正确,这是一个棘手的问题。正如您

我正在实现一个下载系统,我有一个包含核心数据元素的表视图

我希望用户按下手机上的下载按钮,系统将开始下载相关文件

我有我的下载库,可以通过委托方法进行通信和报告进度,我的问题是我不知道如何关联/正确地重新显示/更新可重用单元中的进度视图

下载库与NSURL一起工作,我可以将NSURL子类化,并附加一个表示核心数据实例的属性协议,但即使如此,保持UI逐单元更新的最佳方法是什么


我是否应该在代理每次收到事件时调用
[self.tableView reloadData]

正确,这是一个棘手的问题。正如您所注意到的,单元格对象在表格滚动时被重用,并且不能保证同一单元格对象将继续引用表格的相同索引路径

我建议查看一下
tableView:willDisplayCell:forrowatinexpath:
,它是在即将显示单元格之前在tableView委托上调用的。这将是在下载库中将此单元格设置为正确委托的好地方


至于第二个问题,不,不要在每次事件中调用
[self.tableView reloadData]
。这将是一个破坏性能的决定。:)

建议是好的;我认为关于
tableView:willDisplayCell:forRowAtIndexPath:
但是在单元格上设置下载库委托意味着它将接收所有下载事件,因为库不能有多个委托。因此,我们的想法是将table controller设置为下载库的委托,实现这些方法并基于委托方法(例如progress)执行UI任务。我现在的问题是从委托方法中找到正确的单元格(委托方法很可能对单元格一无所知,最多只知道NSURL)通过查看一个可能附加了属性的对象,我将使用该属性查找核心数据集合。在我有了核心数据记录后,找到单元格(?),检查它是否可见(不起作用),等等。我不确定其他人是怎么做的,在音乐应用程序中,当它开始下载进度视图时,你可以看到每个单元格的下载图标来下载文件(我仍然需要了解它是按钮还是附件视图)更新自身,并能够在屏幕上不显示的同一点重新绘制。