Вы можете использовать objective-c
связанных типов objc_setAssociatedObject
и objc_getAssociatedObject
, например: .
Я обновил ваш метод. Пожалуйста, передайте объект просмотра изображения (какой вид изображения вы хотите показать изображение) из метода действия кнопки. Как метод демонстрации действий для кнопок:
import ObjectiveC
var myKey = "myObjectKey"
@IBAction func firstButtonAction(_ sender: Any) {
pickimage(imageView: firstImageView)
}
@IBAction func secondButtonAction(_ sender: Any) {
pickimage(imageView: secondImageView)
}
func pickimage(imageView: UIImageView){
if UIImagePickerController.isSourceTypeAvailable(.photoLibrary){
let controller = UIImagePickerController()
objc_setAssociatedObject(controller, &myKey, imageView, objc_AssociationPolicy.OBJC_ASSOCIATION_RETAIN_NONATOMIC)
controller.delegate = self
controller.sourceType = .photoLibrary
controller.allowsEditing = false
present(controller, animated: true, completion: nil)
}
}
И получить объект изображения в методе делегата следующим образом:
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
let imageView = objc_getAssociatedObject(picker, &myKey) as! UIImageView
let image = info[UIImagePickerControllerOriginalImage] as! UIImage
imageView.image = image
imageView.contentMode = .scaleAspectFill
dismiss(animated: true, completion: nil)
}
Чтобы лучше понять, как работать objc_setAssociatedObject
и objc_getAssociatedObject
, пожалуйста, проверьте ссылки ниже:
http://blog.corywiles.com/objective-c-runtime-with-swfit
http://en.swifter.tips/associated-object/