不能用swift删除uicollectionview中firebase中的正确图片。

问题描述 投票:0回答:1

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

 }

谢谢你!

swift firebase uicollectionview delete-file
1个回答
1
投票

从你发布的代码来看,你的 profileImageUrl 变量是在 UIViewController 而不在 UICollectionViewCell.

因此,你是在每次单元格被dequeued时设置它。我想它总是从最后一个加载的单元格的url处删除图片。

profileImageUrl 变量的单元格类。

另外,你的 deleteUser 在你的 UIViewController 或您的 UICollectionViewCell 子类?把它放在单元格类中可能更有意义,因为你需要对 profileImageUrl 可变的。

© www.soinside.com 2019 - 2024. All rights reserved.