0
私はメッセージを表示するためにchatviewアプリケーションを作成しようとしています。いくつかのセルが表示されないことを除いて、すべてが正常に動作します。必ずしも同じ細胞であるとは限りません。私はFirebaseデータベースからメッセージを受け取ります。いくつかのセルは表示されません
マイコード:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if let cell = cellCache.object(forKey: indexPath as AnyObject) as? UITableViewCell{
return cell
}
let cell = messagesTableView.dequeueReusableCell(withIdentifier: "otherMessageCell") as! OtherMessageTableViewCell
DispatchQueue.global(qos: .userInteractive).async {
let message = self.messages[indexPath.row]
let ref = FIRDatabase.database().reference()
let uid = FIRAuth.auth()?.currentUser?.uid
if(uid == message.sender) {
cell.sender.textAlignment = .right
cell.message.textAlignment = .right
}else{
cell.sender.textAlignment = .left
cell.message.textAlignment = .left
}
let uidReference = ref.child("Users").child(message.sender!)
uidReference.observeSingleEvent(of: .value, with: { (snapshot) in
if let dictionary = snapshot.value as? [String: AnyObject] {
let username = dictionary["Username"] as! String
let imageLink = dictionary["Image Link"] as! String
cell.sender.text = username
cell.message.text = message.message
cell.profileImage.image = nil
cell.profileImage.loadImageWithURLString(urlString: imageLink)
}
}, withCancel: nil)
}
DispatchQueue.main.async {
self.cellCache.setObject(cell, forKey: indexPath as AnyObject)
}
return cell
}
私は、誰かが私を助けることができることを願っています。おかげ
あなたのコードは、フレームワークと積極的に戦っています(おそらく壊れている)。 DispatchQueue呼び出しとこの 'cellCache' thingamabobは両方とも、適切なセルの再利用を妨げる不必要なクラフトです。 – vzsg