You need to enable JavaScript to run this app. UIImagePickerControllerDelegate未调用 选中图片无法正常显示问题求助
优惠活动
大模型
产品
解决方案
定价
更多

UIImagePickerControllerDelegate未调用 选中图片无法正常显示问题求助

问题根因

你没有为UIImagePickerController实例设置代理对象,所以系统无法将拍照/选图的结果回调到你写的代理方法中。

修复步骤
  • 打开initUI方法,添加afterImagePicker的代理设置代码即可:
func initUI() {
    // 新增下面一行代理设置代码即可,原有其他代码保持不变
    afterImagePicker.delegate = self
    
    // Set Navigation Bar
    let backButton = UIBarButtonItem(title: "", style: .plain, target: navigationController, action: nil)
    navigationItem.leftBarButtonItem = backButton
    self.title = "\(h_proposalNumberStr)-\(h_itemIndex)"
    
    // Set ImageView
    self.afterImageView.image = #imageLiteral(resourceName: "ic_placeholder")
    self.afterImageView.clipsToBounds = false
    
    cameraBtnPressed.layer.cornerRadius = 15
    cameraBtnPressed.layer.borderColor = UIColor.lightGray.cgColor
    cameraBtnPressed.layer.borderWidth = 1
    
    self.isImageSetted = false
}
  • 可选优化项:如果你的项目适配iOS 14及以上版本,建议将代理方法里的取值key替换为系统内置的枚举类型,避免字符串硬编码错误,修改后的代理方法参考如下:
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
    print("called2")
    //getting actual image
    var image = info[.editedImage] as? UIImage

    if image == nil {
        image = info[.originalImage] as? UIImage
    }

    afterImageView.image = image
    // Set Imageview Corner Radius
    afterImageView.layer.cornerRadius = 5
    afterImageView.clipsToBounds = true

    self.isImageSetted = true

    picker.dismiss(animated: true, completion: nil)
}

内容的提问来源于stack exchange,提问作者julian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.20 19:15:03