UIImagePickerController:未调用didFinishPickingMediaWithInfo

希望你们都做得很好。 想知道是否有人可以帮助我理解为什么Xcode不能和我玩得很好….

我已经将代码分成以下部分,以便允许我从UIImagePicker中选择一张个人资料照片:

  1. 工作:为ImagePicker和NavigationController分配委托类
  2. WORKS:实例化UIImagePicker变量
  3. 工作:加载ImagePickerViewController并启用选择图像
  4. 失败:使用UIImagePicker添加了关闭和完成拾取的附加function,但都没有被调用? 我做错了什么?

提前致谢!


class ProfileVC: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate { var imagePicker: UIImagePickerController! 

 override func viewDidLoad() { super.viewDidLoad() imagePicker = UIImagePickerController() imagePicker.delegate = self } 

 @IBAction func selectPhotoPressed(sender: UITapGestureRecognizer) { if UIImagePickerController.isSourceTypeAvailable(.PhotoLibrary) { self.imagePicker.sourceType = .PhotoLibrary } else { self.imagePicker.sourceType = .Camera } imagePicker.allowsEditing = true imagePicker.mediaTypes = [kUTTypeImage as String] self.presentViewController(imagePicker, animated: true, completion: nil) } 

 func imagePickerControllerDidCancel(picker: UIImagePickerController) { self.dismissViewControllerAnimated(true, completion: nil) } func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo image: UIImage, editingInfo: [String : AnyObject]?) { headerView.profilePhoto.contentMode = .ScaleAspectFill headerView.profilePhoto.image = image imagePicker.dismissViewControllerAnimated(true, completion: nil) uploadImage(image) } 

好吧,我似乎现在正在使用它,感谢您帮助确定代码是古老的;)以下是现在运行的内容:

  func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) { let image = info[UIImagePickerControllerOriginalImage] as? UIImage headerView.profilePhoto.contentMode = .ScaleAspectFit headerView.profilePhoto.image = image imagePicker.dismissViewControllerAnimated(true, completion: nil) uploadImage(image!) } 

您的签名有误,但由于它是一种可选方法,因此您不会收到警告。 它应该是:

 func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) { // Your code } 

正如大家的建议,使用didfinishpickingmediawithinfo方法并在swift 3,ios 10中提取图像,使用信息字典

 func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) { imageView.image = info[UIImagePickerControllerOriginalImage] as? UIImage }