0

我在 tableview 单元格中使用 LPLinkView。在滚动重用单元格时,最初会显示回收单元格的 LinkProvider,然后在网络调用完成后立即更改。我想准备电池以供重复使用。有没有办法将链接提供者元数据设置为零?(类似于 imagview.image = nil)

我将在 prepareForReuse 函数中执行此操作。

4

1 回答 1

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
                }
            })
        }
    }
    
}
于 2021-06-14T14:06:13.893 回答