Как установить метаданные LPLinkView на ноль
Я использую LPLinkView в ячейке tableview. При прокрутке повторно используемой ячейки сначала отображается LinkProvider переработанной ячейки, а затем изменяется, как только сетевой вызов завершается. Я хочу подготовить ячейку к повторному использованию. Есть ли способ обнулить метаданные поставщиков ссылок? (аналогично imagview.image = nil)
Сделаю это в функции prepareForReuse.
1 ответ
Решение
Сделать это можно так -
class MyTableViewCell: UITableViewCell {
let linkView = LPLinkView(frame: .zero)
var metadataProvider = LPMetadataProvider()
override func prepareForReuse() {
super.prepareForReuse()
// Cancel in-flight metadata fetch request
metadataProvider.cancel()
// Assign an empty metadata object, all properties inside this are nil
linkView.metadata = LPLinkMetadata()
}
func populateData(json: [String: Any]) {
if let link = json["link"] as? String, let url = URL(string: link) {
metadataProvider = LPMetadataProvider()
metadataProvider.startFetchingMetadata(for: url, completionHandler: { [weak self] (metadata, error) in
if let metadata = metadata, error == nil {
self?.linkView.metadata = metadata
}
})
}
}
}