如果我在同一视图上有两个图像视图,如何区分哪个 UIImagePickerController 调用 func didCancel?

How to differentiate which UIImagePickerController calling the func didCancel if I have two image views on same view?

我在同一视图上有两个 UIImageViewleftImageViewrightImageView)。我想知道哪个 UIImagePickerController 正在调用 imagePickerControllerDidCancel。是 leftImageView 还是正确的?

这里是选择器按钮选择左图或右图的开关。

switch sender.tag {
    // left image
case 0:
    self.imageView = leftImage
default:
    self.imageView = rightImage
}

下面的函数可以知道调用它的是哪个图像视图。但是 didCancel 函数没有:

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
    if let image = info[.originalImage] as? UIImage {
        self.imageView.image = image
    }
    picker.dismiss(animated: true, completion: nil)
}

func imagePickerControllerDidCancel(_ picker: UIImagePickerController) { 
    // the rightImageView or the leftImageView calling the cancel?

    if (rightImageView){
        // print("the right image ")
    }

    picker.dismiss(animated: true, completion: nil)
}

当你展示它时分配一个tag

let picker = UIImagePickerController() // make it an instance var


picker.view.tag = 20
self.present(......

并在取消中勾选

func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
  if picker.view.tag == 20 {
    // left
  }
  else {
   // right
  }
}

您已经拥有所需的信息。检查 self.imageView:

if self.imageView === leftImageView {
    // it's the left image view
} else {
    // it's the right image view
}