未调用Swift 5 UIImagePickerController
在UIImagePicker中调用委托函数时,我有最标准/现成的代码: 进口基础 导入UIKit //导入UIKit.UIImage未调用Swift 5 UIImagePickerController,swift,uiimagepickercontroller,uiimagepicker,Swift,Uiimagepickercontroller,Uiimagepicker,在UIImagePicker中调用委托函数时,我有最标准/现成的代码: 进口基础 导入UIKit //导入UIKit.UIImage class FirstViewController: UIViewController , UIImagePickerControllerDelegate { let imagePicker = UIImagePickerController() @IBOutlet weak var bigImageView: UIImage
class FirstViewController:
UIViewController
, UIImagePickerControllerDelegate
{
let imagePicker = UIImagePickerController()
@IBOutlet weak var bigImageView: UIImageView!
var newlyPickedImage: UIImage?
override func viewDidLoad() {
super.viewDidLoad()
self.view.backgroundColor = Color.offWhiteLight
let singleTap = UITapGestureRecognizer(target: self, action: #selector(onTapImageView))
self.view.isUserInteractionEnabled = true
self.view.addGestureRecognizer(singleTap)
}
@objc func onTapImageView(){
DispatchQueue.main.async {
self.imagePicker.allowsEditing = true
self.imagePicker.sourceType = .photoLibrary
self.present(self.imagePicker, animated: true, completion: nil)
}
}
func imagePickerController(
_ picker: UIImagePickerController
, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any])
{
print("assert enter function") /// not entered
if let pickedImage = info[UIImagePickerController.InfoKey.originalImage] as? UIImage {
self.bigImageView.image = pickedImage
print("picked image: \(pickedImage)")
}
dismiss(animated: true, completion: nil)
}
}
问题是未调用
func imagePickerController
。这很奇怪,因为在另一个视图中,确切的代码确实调用了func-imagePickerController
。我还尝试在Appdelegate中实例化一个全局UIImagePickerController
实例,并引用该实例,调用仍然没有调用。您似乎缺少UIImagePickerController
的设置委托。将您的onTapImageView
替换为以下内容:
@objc func onTapImageView(){
DispatchQueue.main.async {
self.imagePicker.allowsEditing = true
self.imagePicker.sourceType = .photoLibrary
self.imagePicker.delegate = self
self.present(self.imagePicker, animated: true, completion: nil)
}
}
您还需要控制器确认UINavigationControllerDelegate
,因此将一致性添加到FirstViewController
,如下所示:
class FirstViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {