為什么在 UITableView cellForRowAt 內部呼叫時單元格參考變得混亂:(單元格從
guard let cell = tableView.dequeueReusableCell(withIdentifier: "venuepostcell")as? VenuePostTableViewCell else { return UITableViewCell()}
cell.tag = indexPath.row
sRef.downloadURL { downloadURL, error in
if downloadURL != nil {
print ("=== A \(indexPath.row) \(cell.tag)")
}
}
cell.tag 應該總是等于 indexPath.row。
最初,它確實如此,但是如果我有時重繪 indexPath.row 不等于 cell.tag???
最初的
=== 3 3
=== 0 0
=== 1 1
=== 2 2
=== 4 4
然而在重繪 時它會作為
=== 0 0
=== 1 1
=== 4 0 <-- WRONG
=== 4 4
=== 3 3
=== 3 1 <-- WRONG
=== 2 2
=== 1 3 <-- WRONG
=== 0 4 <-- WRONG
=== 4 0 <-- WRONG
uj5u.com熱心網友回復:
這就是 UITableView 的實作方式。sRef.downloadURL是一個異步呼叫,這意味著在收到回呼時,有可能用戶滾動了表格視圖并為單元格設定了一個全新的標簽,而未indexPath.row更改。
您可能需要更改實施此方法的方法。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/326567.html
標籤:迅速 合适的视图 谷歌云firestore
