Search code examples
swiftuiimagepickercontroller

UIImagePickerController didFinishPickingImage not calling in Swift 3


I am trying to load an image from photo library using imagePickerView. I, updated my plist to get access to photo library as below for Xcode 8.

enter image description here

After, Updated plist.I can get access to photo library. But,Picker image not loading to my imageView.

My code:

Note: Below code use to work in Xcode 7 not in Xcode 8 ?

   import UIKit

   class ViewController: UIViewController,UIImagePickerControllerDelegate,UINavigationControllerDelegate {

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

   override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
        imagePicker.delegate = self
   }

   @IBAction func library(_ sender: UIButton) {

    if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.photoLibrary) {
        imagePicker.delegate = self
        imagePicker.sourceType = UIImagePickerControllerSourceType.photoLibrary;
        imagePicker.allowsEditing = true
        self.present(imagePicker, animated: true, completion: nil)
     }
   }

Code updated: from rmaddy answer:

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

enter image description here

Thanks in Advance....


Solution

  • In Swift 3 you need to use the proper delegate method:

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