我目前有一个NSObject
类,其中我创建了一个UIImagePickerController
对象。在这个课程中,我有2个函数,将sourceType
设置为一个函数中的摄像头,将sourceType
设置为其他函数中的照片库。
我使用UIImagePickerController
类中的协议呈现UIViewController
对象。
class ImagePickerManager: NSObject
{
let picker = UIImagePickerController()
var imagePickerDelegate: ImagePickerProtocol!
override init()
{
super.init()
picker.delegate = self
}
func cameraPicker()
{
picker.sourceType = .camera
picker.cameraCaptureMode = .photo
imagePickerDelegate.presentImagePicker(picker: picker)
}
func photoLibraryPicker()
{
picker.sourceType = .photoLibrary
imagePickerDelegate.presentImagePicker(picker: picker)
}
}
extension OtherViewController: ImagePickerProtocol
{
func presentImagePicker(picker: UIImagePickerController)
{
self.present(picker, animated: true, completion: nil)
}
}
class OtherViewController: UIViewController
{
...
@IBAction func addPhoto(_ sender: UIButton)
{
let alert = CustomAlertController(title: nil, message: "Aimage", style: .actionSheet)
alert.addAction(AlertAction(title: "Camera", style: .ok) { action in
let imagePickerManager = ImagePickerManager()
imagePickerManager.imagePickerDelegate = self
imagePickerManager.cameraPicker()
})
alert.addAction(AlertAction(title: "Photo Library", style: .ok) { action in
let imagePickerManager = ImagePickerManager()
imagePickerManager.imagePickerDelegate = self
imagePickerManager.photoLibraryPicker()
})
alert.addAction(AlertAction(title: "Cancel", style: .cancel))
present(alert, animated: true, completion: nil)
}
}
我的ImagePickerManager
类符合UIImagePickerControllerDelegate和UINavigationControllerDelegate:
extension ImagePickerManager: UIImagePickerControllerDelegate
{
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any])
{
print("imagePickerController")
if let selectedImage = info[UIImagePickerControllerOriginalImage] as? UIImage
{
print("SELECTED IMAGE")
}
picker.dismiss(animated: true, completion: nil)
}
func imagePickerControllerDidCancel(_ picker: UIImagePickerController)
{
picker.dismiss(animated: true, completion: nil)
}
}
extension ImagePickerManager: UINavigationControllerDelegate
{
}
但是,NSObject
类从不调用任何委托方法。
我看过类似的问题: