問題:請參閱video。我正在從Firebase存儲中下載圖像並顯示在表格視圖單元格中。在我構建應用程序後,圖像不會顯示在表格視圖的第一個單元格中。在向下滾動和備份時,我可以在表格視圖的第一個單元格中看到圖像。UIImage在表格視圖單元格中未顯示,直到滾動爲止
我諮詢這個question(清除應用程序的數據緩存&模擬器沒有工作),這question(不同的問題B/C,他們正在下載的URL圖像)。我讀this關於使用佔位符圖像,但我不確定它是否適用,因爲我沒有使用SDWebImage,而我的單元使用我自己的companyImage
UIImageView
而不是UITableView
單元附帶的imageView
。
代碼:
公司 - 視圖 - 控制器:
class CompanyViewController: UIViewController, UISearchBarDelegate, UIScrollViewDelegate, UITableViewDelegate, UITableViewDataSource {
override func viewDidLoad() {
super.viewDidLoad()
companyTableView.register(CompanyTableViewCell.self, forCellReuseIdentifier: "CompanyTableViewCell")
companyTableView.register(UINib(nibName: "CompanyTableViewCell", bundle: nil), forCellReuseIdentifier: "CompanyTableViewCell")
loadData()
}
func loadData() {
databaseHandle = databaseRef?.child("companies").observe(.value, with: { (snapshot) in
for item in snapshot.children.allObjects as! [FIRDataSnapshot] {
let company = Company()
let id = item.childSnapshot(forPath: Property.id.rawValue).value as! String
let imageName = id + ".png"
let imageRef = self.storageRef?.child(imageName)
imageRef?.data(withMaxSize: 1 * 1024 * 1024) { data, error in
if let error = error {
print((error as Error).localizedDescription)
} else if let data = data {
// Data for "images/companyid.png" is returned
company.image = UIImage(data: data)
}
}
self.informationStateController?.addCompany(company: company)
}
DispatchQueue.main.async {
self.companyTableView.reloadData()
}
})
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
{
let company = (self.informationStateController?.companies[indexPath.row])!
let customCell = tableView.dequeueReusableCell(withIdentifier: CompanyTableViewCell.identifier) as! CompanyTableViewCell
customCell.companyImage.image = company.image
return customCell
}
}
公司表格視圖單元格
class CompanyTableViewCell: UITableViewCell {
@IBOutlet weak var companyImage: UIImageView!
override func awakeFromNib() {
super.awakeFromNib()
companyImage.contentMode = .scaleAspectFit
}
}
歡迎回來。你至少嘗試過使用佔位符圖像嗎?如果該解決方案適用於「SDWebImage」,則應該在此處適用。我至少建議試着看看會發生什麼。 – Pierce
您是否嘗試過調試'company.image'是否返回第一個屏幕加載的'tableView:cellForRowAt:'函數中的任何內容? –
好吧,我只是這樣做的,對於第一次屏幕加載,所有七個單元格的圖像返回'nil',但是當我向下滾動和向上滾動時,我得到'可選(,{1998,496 })''''可選(,{646,218})'等 –
14wml