私は、ユーザーが投稿を好きになるかもしれないコレクションビューを実装しようとしましたが、何らかの理由でユーザーがフィードを更新するだけで、行ってはならない古い細胞を残す。つまり、セルの半分は更新され、残りの半分は古い値になります。基本的には、問題なく現在のセルを単に更新する方法を知ることはできません。理想的には、ユーザーがlikeボタンを押して、そのボタンが「違う」に変わり、collectionviewで変更される投稿の好きな人の数が増えることを、私は望みます。ここでUICollectionViewセルをリロードして古いセルをリロードしない
は、コレクションビューのセルをロードするためのコードです:ここで
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = feedCollectionView.dequeueReusableCell(withReuseIdentifier: cellIdentifier, for: indexPath) as! MyGroupFeedCollectionViewCell
cell.postKey = feedArray[indexPath.row].postKey
//clears the cells first
cell.profileImage.image = nil
cell.usernameLabel.text = nil
cell.usernameLabel2.text = nil
cell.groupName.text = nil
cell.postImageView.image = nil
cell.postCaptionTextView.text = nil
cell.timeStamp.text = nil
//load profile picture
cell.profileImage.sd_setImage(with: URL(string: feedArray[indexPath.row].ProfilePic), placeholderImage: UIImage(named:"no profile picture.png"))
//load username
cell.usernameLabel.text = feedArray[indexPath.row].Username
cell.usernameLabel2.text = feedArray[indexPath.row].Username
//load groupName when in home feed
cell.groupName.text = feedArray[indexPath.row].GroupName
//load postImage
cell.postImageView.sd_setImage(with: URL(string: feedArray[indexPath.row].PostImage), placeholderImage: UIImage(named:"penguinPanorama"))
//load caption
cell.postCaptionTextView.text = feedArray[indexPath.row].caption
//load likes once likes are implemented
//checks if the user has liked the post or not
databaseRef.child("likes").child((FIRAuth.auth()?.currentUser?.uid)!).child(feedArray[indexPath.row].postKey).observe(.value, with: { (snapshot) in
if(snapshot.exists())
{
cell.liked = "Yes"
cell.likeButton.setTitle("Unlike", for: .normal)
}
else{
cell.liked = "No"
cell.likeButton.setTitle("Like", for: .normal)
}
})
のようなボタンが押されている関数のコードです:同類のために
@IBAction func likeButton_tapped(_ sender: Any) {
self.likeButton.isEnabled = false
print(self.postKey)
print(self.liked)
//make it so liking or unliking adds or subtracts from the total number of likes on the post
if liked == "Yes"
{
self.databaseRef.child("likes").child((FIRAuth.auth()?.currentUser?.uid)!).child(self.postKey).removeValue()
let NewLikeNumber = likeNumber - 1
self.databaseRef.child("GroupPosts").child(self.groupName.text!).child(self.postKey).child("likes").setValue(NewLikeNumber)
print(NewLikeNumber)
}
else{
self.databaseRef.child("likes").child((FIRAuth.auth()?.currentUser?.uid)!).child(self.postKey).setValue("")
let NewLikeNumber = likeNumber + 1
self.databaseRef.child("GroupPosts").child(self.groupName.text!).child(self.postKey).child("likes").setValue(NewLikeNumber)
print(NewLikeNumber)
}
self.likeButton.isEnabled = true
}
ここで、コレクションビューを再読み込みしていますか? – ebby94
@ ebby94投稿がロードされている関数の最後にコレクションビューをリロードしています。この関数はviewwillで表示されます – dombad