0
votes

For some reason in my new project this code is not working which has worked for me before. The current code does not change the ui of profileImage.

Delegates

UIImagePickerControllerDelegate, UINavigationControllerDelegate, UIGestureRecognizerDelegate

Code:

@IBOutlet weak var profileImage: UIImageView!

@IBAction func changeProfilePicture(_ sender: Any) {
        print("Profile picture tapped")

        let pickerController = UIImagePickerController()
        pickerController.delegate = self
        pickerController.allowsEditing = true

        let alertController = UIAlertController(title: "Add Picture", message: "", preferredStyle: .actionSheet)

        let photoLibraryAction = UIAlertAction(title: "Photo Library", style: .default) { (action) in
            pickerController.sourceType = .photoLibrary
            self.present(pickerController, animated: true, completion: nil)
        }


        let cancelAction = UIAlertAction(title: "Cancel", style: .destructive, handler: nil)
        alertController.addAction(photoLibraryAction)
        alertController.addAction(cancelAction)
        present(alertController, animated: true, completion: nil)
    }

   @objc func imagePickerController(_ picker: UIImagePickerController, didFinishPickingImage image: UIImage, editingInfo: [String : Any]?) {

        self.profileImage.image = image
        self.dismiss(animated: true, completion: nil)

    }

Console Output

errors encountered while discovering extensions: Error Domain=PlugInKit Code=13 "query cancelled" UserInfo={NSLocalizedDescription=query cancelled}

I have tried

   @objc func

    internal func

    @objc internal func

self.profileImage.image = image does not set the UI and change the image

1

1 Answers

2
votes

Correct delegate method

func imagePickerController(_ picker: UIImagePickerController, 
  didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {

   if let image = info[.originalImage] as? UIImage {
      self.profileImage.image = image
   }
   else
     if let image = info[.editedImage] as? UIImage {
      self.profileImage.image = image
    }
     self.dismiss(animated: true, completion: nil)
}