Я хочу выбрать изображение с помощью двух кнопок и хочу, чтобы эти изображения отображались на двух разных изображениях в режиме быстрой работы. Как я могу это сделать? - PullRequest
0 голосов
/ 05 мая 2018

Я хочу выбрать изображение с помощью двух кнопок и хочу, чтобы эти изображения отображались на двух разных изображениях в режиме swift

 func pickimage(){
            if UIImagePickerController.isSourceTypeAvailable(.photoLibrary){

                let controller = UIImagePickerController()
                controller.delegate = self
                controller.sourceType = .photoLibrary
                controller.allowsEditing = false
                present(controller, animated: true, completion: nil)
            }

        }

Делегаты выбора изображения

extension AdnewDOC : UIImagePickerControllerDelegate,UINavigationControllerDelegate {

    func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
        dismiss(animated: true, completion: nil)
    }


    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {


            let image = info[UIImagePickerControllerOriginalImage] as! UIImage
            frontview.image = image
            frontview.contentMode = .scaleAspectFill

         dismiss(animated: true, completion: nil)


    }


}

1 Ответ

0 голосов
/ 05 мая 2018

Вы можете использовать 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/

...