如何在swift中处理多个动态调整大小的UITableViewCells?

时间:2017-07-30 14:50:51

标签: ios swift uitableview

我有从网络加载内容的单元格,然后更新其内容。例如,将视图添加到链接的预览卡或图像的预览。

这意味着在初始加载和数据完成滴入之后,单元格的高度变化很大。

当滚动浏览这些单元格的UITableView时,单元格会弹出很多,有时卡在一个恒定的更新周期中,底部的单元格会加载,发现它没有内容,收缩,顶部有一个单元格滚动回视图,推下底部单元,加载,然后收缩;依此类推,导致UI锁定计算所有更改。

在UITableView中处理多个动态调整大小的单元格的更合适的方法是什么?

目前,UITableViewController是单元格的委托,如下所示:

protocol TweetCellDelegate {
    // ...
    func didChangeHeight(forCell: TweetCell)
    // ...
}

class TweetCell: /* delegates */ {
    var tweetDelegate: TweetCellDelegate?
    func resized() {
        self.tweetDelegate?.didChangeHeight(forCell: self)
    }
}

class TweetsTableViewController: TweetCellDelegate {
    func didChangeHeight(forCell: TweetCell) {
        self.tableView.beginUpdates()
        self.tableView.endUpdates()
    }
}
每当有关图像或链接的新信息到达时,

TweetCell都会调用resized()。如果数据被缓存,则尽可能多地收集这些数据,但可能会多次调用。

0 个答案:

没有答案