这个问题可能与其他问题类似,但我认为不是。
直截了当......
最佳做法是将最佳实践设置为UITableViewCell / UICollectionViewCell子类的最佳实践吗?
为什么这个问题? ...您可能知道UITableView / UICollectionView是以异步方式构建的,这让我认为这可以成为避免崩溃或错误数据使用的好方法。
让我解释一下。 可能大多数iOS开发人员至少遇到过一次UITableViewCell子类的需要,该委托对象用于传递单元格以响应单元本身的某些交互。
这样做委托(ViewController)可能会搜索单元格的索引路径以发现相关的数据对象并对数据进行一些处理。好的但是很多时候发生了委托消息是在由于远程数据更新而重新加载tableView之后传递的,但是异步过程旧的单元仍在屏幕上...
在最糟糕的情况下,您将崩溃,在最好的情况下,您将对错误的数据对象采取行动。
因此,如前所述,对此的解决方案可能是由单元子类携带的不透明对象(上下文),该对象将可用于从发送到委托消息的单元格中获取上下文的单元委托。 显然,由于重用,必须在prepareForReuse期间清除上下文中的单元类。
通过这种方式,TableViewCell 对模型一无所知,但它将充当代表的邮递员。
你怎么看?
答案 0 :(得分:0)
但是很多时候发生了委托消息是在由于远程数据更新而重新加载tableView之后传递的,但是旧的单元仍在屏幕上是异步过程
如果出现以下情况,则不应该出现此问题:
如果您的模型更新和表格UI重新加载之间有一些延迟,那么您将遇到很多问题,而不仅仅是您描述的问题。
基本上,我更喜欢在添加到单元格的上下文对象中查找索引路径等详细信息的方法。