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
相关产品推荐
相关产品推荐

