Как установить метаданные 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
                }
            })
        }
    }
    
}
Другие вопросы по тегам