基于通知更新表格单元格的最佳实践

Shi*_*zam 6 iphone objective-c uitableview

我有一个自定义单元格的表格视图,表示单个上传,每个单元格中都有一个进度指示器和一个成功/错误图标.我希望在进度更新时更新单元格,并指出它是否成功/失败.我通过让我的上传控制器广播NSNotifications以获得进度/成功/失败来实现此目的.

是否更好:

A)让每个单元具有用于这些通知的NSNotification监听器并更新单元视图

要么

B)让表视图控制器有一个NSNotification监听器监听这些通知,然后通过使用cellForRowAtIndexPath获取单元格来设置每个单元的值.

我想它归结为A更容易实现,但我想知道是否有一个性能损失让很多听众听取这些通知并做'如果这个通知是关于我......'.与只有一个监听器的B相反,并且可以推广到任何多个与单个监听器设计.

Jef*_*ley 5

您可以为表视图设置键值观察(KVO)以处理行更新,然后使用它(使用自定义UITableViewCell子类)使用对象中的信息更新单元格.有关使用KVO进行节/行更新的示例,请参阅使用KVO进行表更新.

  • 是的!为了清楚起见,你可以通过继承`UITableViewCell`并覆盖`-prepareForReuse`来做到这一点.在该方法中,停止观察对象. (3认同)
  • +1只记得单元格被重用,所以如果单元格本身正在观察数据(而不是TableViewController这样做),那么一定要将它作为观察者从旧数据中删除,然后再将它作为观察者添加到新数据中. (2认同)