Joe Joe - 1 month ago 39
Swift Question

UIImagePickerController didFinishPickingImage not calling in Swift 3

I am trying to load 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....

Answer

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);
}
Comments