Đối với Xcode 8.1 với swift 3, Sau khi thay đổi phương thức ủy quyền như bên dưới
thay đổi của bạn
func imagePickerController(picker: UIImagePickerController, didFinishPickingImage image: UIImage, editingInfo: [String : AnyObject]?) {
imagePost.image = image
self.dismiss(animated: true, completion: nil)
}
chức năng
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any])
{
imagePost.image = info[UIImagePickerControllerOriginalImage] as? UIImage
picker.dismiss(animated: true, completion: nil)
}
Tôi quên thêm UINavigationControllerDelegate cùng với UIImagePickerControllerDelegate trong
class ViewController:UIViewController,UIImagePickerControllerDelegate,UINavigationControllerDelegate
Bạn sẽ thêm một biến ngay từ đầu như
var imagePicker = UIImagePickerController ()
và đặt ủy quyền và gọi một hàm trong viewdidload () dưới dạng
imagePicker.delegate = self
viwImagePick()
Sau đó, giải thích chức năng đó như
func viwImagePick(){
let alert = UIAlertController(title: nil, message: "Choose your source", preferredStyle: UIAlertControllerStyle.alert)
alert.addAction(UIAlertAction(title: "Camera", style: UIAlertActionStyle.default) { (result : UIAlertAction) -> Void in
print("Camera selected")
self.openCamera()
})
alert.addAction(UIAlertAction(title: "Photo library", style: UIAlertActionStyle.default) { (result : UIAlertAction) -> Void in
print("Photo selected")
self.openGallary()
})
self.present(alert, animated: true, completion: nil)
}
func openCamera()
{
imagePicker.sourceType = UIImagePickerControllerSourceType.camera
if UIDevice.current.userInterfaceIdiom == .phone
{
self.present(imagePicker, animated: true, completion: nil)
}
else
{
let popover = UIPopoverController(contentViewController: imagePicker)
popover.present(from: profileImgViw.frame, in: self.view, permittedArrowDirections: UIPopoverArrowDirection.any, animated: true)
}
}
func openGallary()
{
imagePicker.sourceType = UIImagePickerControllerSourceType.savedPhotosAlbum
if UIDevice.current.userInterfaceIdiom == .phone
{
self.present(imagePicker, animated: true, completion: nil)
}
else
{
let popover = UIPopoverController(contentViewController: imagePicker)
popover.present(from: profileImgViw.frame, in: self.view, permittedArrowDirections: UIPopoverArrowDirection.any, animated: true)
}
}
Bây giờ hình ảnh được thêm vào chế độ xem hình ảnh từ thư viện
didFinishPickingMediaWithInfo info: [String : Any]