如何将LPLinkView的元数据设置为nil
How to set the metadata of LPLinkView to nil
我在表格视图单元格中使用 LPLinkView。滚动时,重用单元最初显示回收单元的 LinkProvider,然后在网络调用完成后立即更改。我想准备电池以供重复使用。有没有办法将 link 提供者元数据设置为零? (类似于 imagview.image = 无)
我会在 prepareForReuse 函数中完成。
你可以这样做 -
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
}
})
}
}
}
我在表格视图单元格中使用 LPLinkView。滚动时,重用单元最初显示回收单元的 LinkProvider,然后在网络调用完成后立即更改。我想准备电池以供重复使用。有没有办法将 link 提供者元数据设置为零? (类似于 imagview.image = 无)
我会在 prepareForReuse 函数中完成。
你可以这样做 -
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
}
})
}
}
}