我的UITableViewCell如何知道何时显示和销毁?

时间:2016-01-23 22:46:33

标签: ios swift uitableview

当用户向下滚动tableView时,单元格正在出列并排队。

我想知道,在我的UITableViewCell中,当发生这种情况时。

如果不可能,我们是否可以使用通知中心来实现这一目标(使用表格视图的代表?)

注意:我希望单元格本身知道它何时出列。 我知道我已经可以使用UITableView的2个代表了,但我宁愿不使用它们。

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()
    }
}