无法使用 swift 在 uicollectionview 中从 firebase 中删除正确的图片

can't delete the correct picture from firebase in uicollectionview using swift

所以,我有一个集合视图,其中包含从 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 内。

因此,每次单元格出队时都要设置它。我想它总是会从加载的最后一个单元格中删除 url 处的图像。

在单元格 class 内移动 profileImageUrl 变量。

此外,您的 UIViewControllerUICollectionViewCell subclass 中的 deleteUser 方法?将它放在单元格 class 中可能更有意义,因为您需要获取 profileImageUrl 变量的句柄。