UIImagePickerController:didFinishPickingMediaWithInfo没有被调用

Dav*_*est 6 uiimageview uiimagepickercontroller ios swift

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

我将代码分为以下几部分,以便允许我从UIImagePicker中选择个人资料照片:

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

提前致谢!


class ProfileVC: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
var imagePicker: UIImagePickerController!
Run Code Online (Sandbox Code Playgroud)
override func viewDidLoad() {
    super.viewDidLoad()

    imagePicker = UIImagePickerController()
    imagePicker.delegate = self
}
Run Code Online (Sandbox Code Playgroud)
@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)
}
Run Code Online (Sandbox Code Playgroud)
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)
}
Run Code Online (Sandbox Code Playgroud)

Dav*_*est 5

好的,我现在似乎可以正常运行了,感谢您的帮助,以确认代码是古老的;)现在运行的是:

    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!)
}
Run Code Online (Sandbox Code Playgroud)


Mic*_*ael 2

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

func imagePickerController(picker: UIImagePickerController,
          didFinishPickingMediaWithInfo info: [String : AnyObject]) {
    // Your code
}
Run Code Online (Sandbox Code Playgroud)