未调用Swift 5 UIImagePickerController

未调用Swift 5 UIImagePickerController,swift,uiimagepickercontroller,uiimagepicker,Swift,Uiimagepickercontroller,Uiimagepicker,在UIImagePicker中调用委托函数时,我有最标准/现成的代码: 进口基础 导入UIKit //导入UIKit.UIImage class FirstViewController: UIViewController , UIImagePickerControllerDelegate { let imagePicker = UIImagePickerController() @IBOutlet weak var bigImageView: UIImage

在UIImagePicker中调用委托函数时,我有最标准/现成的代码:

进口基础 导入UIKit //导入UIKit.UIImage

class FirstViewController:
      UIViewController
    , UIImagePickerControllerDelegate
{

    let imagePicker = UIImagePickerController()
    @IBOutlet weak var bigImageView: UIImageView!

    var newlyPickedImage: UIImage?

    override func viewDidLoad() {

        super.viewDidLoad()
        self.view.backgroundColor = Color.offWhiteLight

        let singleTap = UITapGestureRecognizer(target: self, action: #selector(onTapImageView))
        self.view.isUserInteractionEnabled = true
        self.view.addGestureRecognizer(singleTap)
    }

    @objc func onTapImageView(){
        DispatchQueue.main.async {
            self.imagePicker.allowsEditing = true
            self.imagePicker.sourceType = .photoLibrary
            self.present(self.imagePicker, animated: true, completion: nil)
        }
    }

    func imagePickerController(
         _ picker: UIImagePickerController
        , didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any])
    {
        print("assert enter function") /// not entered

        if let pickedImage = info[UIImagePickerController.InfoKey.originalImage] as? UIImage {
            self.bigImageView.image = pickedImage
            print("picked image: \(pickedImage)")
        }

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

问题是未调用
func imagePickerController
。这很奇怪,因为在另一个视图中,确切的代码确实调用了
func-imagePickerController
。我还尝试在Appdelegate中实例化一个全局
UIImagePickerController
实例,并引用该实例,调用仍然没有调用。

您似乎缺少
UIImagePickerController
的设置委托。将您的
onTapImageView
替换为以下内容:

@objc func onTapImageView(){
    DispatchQueue.main.async {
        self.imagePicker.allowsEditing = true
        self.imagePicker.sourceType = .photoLibrary
        self.imagePicker.delegate = self
        self.present(self.imagePicker, animated: true, completion: nil)
    }
}
您还需要控制器确认
UINavigationControllerDelegate
,因此将一致性添加到
FirstViewController
,如下所示:

class FirstViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {