【问题标题】:UIImagePickerController: didFinishPickingMediaWithInfo not being calledUIImagePickerController:没有调用 didFinishPickingMediaWithInfo
【发布时间】:2016-03-17 23:41:36
【问题描述】:

希望你们一切都好。想知道是否有人可以帮助我理解为什么 Xcode 无法与我相处融洽......

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

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

提前致谢!


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

【问题讨论】:

    标签: ios swift uiimageview uiimagepickercontroller


    【解决方案1】:

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

        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!)
    }
    

    【讨论】:

    • 很高兴你能成功。我也会更新我的答案,因为我注意到我的签名也略有错误(你的签名是正确的)。
    • 值得注意的是,UIImagePickerControllerOriginalImage 将如其所说,为您提供原始图像,不包括用户可能进行的任何编辑或修改。为此,您可以使用UIImagePickerControllerEditedImage。
    【解决方案2】:

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

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

    【讨论】:

    • 好的很酷,但如果是这样,我将如何将 UIImagePicker 图像应用到我的 UIImageView?感谢您的快速响应!
    【解决方案3】:

    正如大家所建议的,使用 didfinishpickingmediawithinfo 方法并在 swift 5、iOS 13 中提取图像,使用 info 字典

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

    【讨论】:

    • 使用此代码时出现此错误:无法将“UIImagePickerController.InfoKey”类型的值转换为预期的参数类型“字符串”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-27
    • 2014-07-28
    相关资源
    最近更新 更多