I am using collectionView to display photos and delegate functions to view custom alert. On photos I have cross mark which is for delete photo. My delegate functions and display items all working fine. But I am getting Issue when I have to delete photo from server. Because I need to pass exact image ID to web service to remove it from server. If I use cell.tag thing it gives me row value which is 1 but actual imgID is 40992. How can I pass this value to my delete delegate function?
Structure:
cell items display --tap gesture call removeImage func --- custom alert -- on Delete button -- didDeleteButtonClicked called.
Main Value which I need in cellForItem:
let imgId = AppData?.imageList?[indexPath.row].projectUnitImageId
PhotoViewController:
public func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
            let cell = collectionView.dequeueReusableCell(withReuseIdentifier: cellName, for: indexPath) as! PhotoCollectionViewCell
            if(indexPath.row < (AppData?.imageList?.count ?? 0)){
                cell.imageView.isHidden = false
                cell.closeIcon.isHidden = false
                cell.addIcon.isHidden = true
                let dic = AppData?.imageList?[indexPath.row].url ?? " "
                cell.imageView.image =  UIImage(url: URL(string: dic))
                let imgId = AppData?.imageList?[indexPath.row].projectUnitImageId
                print(imgId)
                cell.closeIcon.isUserInteractionEnabled = true
                cell.closeIcon.tag = imgId ?? 0
                deleteAlertView.delegate = self
                let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(removeImage(_:)))
                cell.closeIcon.addGestureRecognizer(tapGestureRecognizer)
            } else {
                cell.imageView.isHidden = true
                cell.closeIcon.isHidden = true
                cell.addIcon.isHidden = false
            }
            return cell
        }
        @objc func removeImage(_ sender: AnyObject){
            print(imgId)
            let fotoXib = Bundle.main.loadNibNamed("FotoDeleteAlert", owner: self, options: nil)
            let alertView = fotoXib?.first as! FotoDeleteAlert
            alertView.delegate = self
            self.view.addSubview(alertView)
        }
          //MARK: - Delegate Function
extension PhotoCollectionViewController: handleDeleteAction {
        func didDeleteButtonClicked(_ sender: UIButton) {
            print("delegate")
            let row = sender.tag
            print(row)
            // I have to call my delete webServices here and have to pass imgId
            deleteWebservices(imgId)
        }
    }
FotoAlert Xib custom alert:
protocol handleDeleteAction {
    func didDeleteButtonClicked(_: UIButton)
}
@IBDesignable class FotoDeleteAlert: UIView {
    var delegate: handleDeleteAction?
    @IBOutlet weak var deleteBtn: UIButton!
    override func awakeFromNib() {
        super.awakeFromNib()
        layoutIfNeeded()
        deleteBtn.addTarget(self, action: #selector(didDelete(_:)), for: .touchUpInside)
    }
    @IBAction func didCancel(_ sender: Any) {
        removeFromSuperview()
    }
    @IBAction func didDelete(_ sender: UIButton) {
        self.delegate?.didDeleteButtonClicked(sender)
        removeFromSuperview()
    }
}