UIImagePickerController:didFinishPickingMediaWithInfo未被调用

时间:2016-03-17 23:41:36

标签: ios swift uiimageview uiimagepickercontroller

希望你们一切顺利。想知道是否有人能帮助我理解为什么Xcode不能和我玩得很好....

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

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

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

3 个答案:

答案 0 :(得分: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!)
}

答案 1 :(得分:2)

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

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

答案 2 :(得分:0)

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

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