所以,我有一个集合视图,其中包含从firebase下载的图片。每个单元有一个删除按钮。我试图让用户删除这些图片。到目前为止,我能够删除单元格。但随后删除了错误的firebase图片,所以当collectionview被重新加载时,它仍然显示了我想删除的图片。请帮助我
var profileImageUrl: String?
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: reuseIdentifier, for: indexPath) as! createProfilePicCollectionViewCell
cell.picCellPic.loadImageUsingCacheWithUrlString(urlString: imageUrlArray[indexPath.item])
profileImageUrl = imageUrlArray[indexPath.item]
cell.deleteButton?.tag = indexPath.row
cell.deleteButton?.addTarget(self, action: #selector(deleteUser(sender:)), for: UIControlEvents.touchUpInside)
return cell
}
我试图从collectionview单元格中使用变量'profileImageUrl'来引用正确的图片URL,这样我就可以正确地删除它们。但似乎这个变量引用了错误的URL。这里是删除功能。
@objc func deleteUser(sender:UIButton) {
if let user = Auth.auth().currentUser {
let UID = user.uid
let storageRef = Storage.storage().reference(forURL: self.profileImageUrl!)
ref.removeValue { error, _ in
}
}
let i = sender.tag
imageUrlArray.remove(at: i)
collectionViewController.reloadData()
}
谢谢你!
从你发布的代码来看,你的 profileImageUrl
变量是在 UIViewController
而不在 UICollectionViewCell
.
因此,你是在每次单元格被dequeued时设置它。我想它总是从最后一个加载的单元格的url处删除图片。
将 profileImageUrl
变量的单元格类。
另外,你的 deleteUser
在你的 UIViewController
或您的 UICollectionViewCell
子类?把它放在单元格类中可能更有意义,因为你需要对 profileImageUrl
可变的。