当用户向下滚动tableView时,单元格正在出列并排队。
我想知道,在我的UITableViewCell中,当发生这种情况时。
如果不可能,我们是否可以使用通知中心来实现这一目标(使用表格视图的代表?)
注意:我希望单元格本身知道它何时出列。 我知道我已经可以使用UITableView的2个代表了,但我宁愿不使用它们。
答案 0 :(得分:2)
我有类似的任务,我开始使用这种方法:
override func willMoveToSuperview(_ newSuperview: UIView?)
{
super.willMoveToSuperview(newSuperview)
if newSuperview != nil
{
// Cell will be added to collection view
}
else
{
// Cell will be removed
}
}
override func didMoveToSuperview()
{
// You can also override this method, check self.superview
}
我记得这些方法比prepareForReuse()
更稳定。但无论如何,委托方法都更加健壮。
答案 1 :(得分:0)
当不再需要单元格时,它会从UITableView
中删除,以便检测何时发生这种情况,您可以覆盖removeFromSuperView
方法。但是,当您滚动时,单元格会被重用,因此您还需要在prepareForReuse中进行相同的清理。
至于检测何时将其添加到表视图中,您可以添加由configure
调用的cellForRowAtIndexPath:
方法,因为您最有可能需要实现cellForRowAtIndexPath:
。< / p>
class MyTableViewCell: UITableViewCell {
func configure(obj: MyDataObject) {
// intialize whathever you need
}
func doCleanup() {
// cleanup the stuff you need
}
override func removeFromSuperview() {
super.removeFromSuperview()
doCleanup()
}
override func prepareForReuse() {
super.prepareForReuse()
doCleanup()
}
}