>

2 개의 함수 UITapGestureRecognizer 를 추가하고 있습니다  내 2 UIImage   UIImage 마다 다른 그림을 표시하기위한 것 .

UIImage 중 하나를 탭하면 UIAlertController  사진 추가 (카메라 또는 라이브러리 사용)를 표시하고 2 개의 옵션을 제공합니다

하지만 사진을 추가 할 때 둘 다 같은 사진을 표시합니다 ( imagePickerController 를 사용할 때)

그리고 if else 를 추가 한 후  진술, 사진은 if 에만 표시됩니다  두 번째 UIImage 를 탭해도 진술

예 :

2 개의 UIImage 를했습니다  이름이 imageView1.image  그리고 imageView2.image

첫 번째 imageView1.image 를 탭합니다 UIAlertController  옵션 표시 (카메라 및 라이브러리) 라이브러리를 선택하고 image1.jpg를 선택합니다

image1.jpg를 선택한 후 두 imageView1.image  그리고 imageView2.image  같은 사진을 표시합니다.

if else 를 추가 한 후   func imagePickerController 의 진술 , image1.jpg는 if 에만 표시됩니다  진술 ... 심지어 imageVIew2.image 를 탭

그러나 내가 원하는 것은 ... imageView1.image 를 탭하면  image1.jpg, imageView1.image 를 선택하십시오  image1.jpg 및 imageView2.jpg 표시  아무것도 표시하지 않습니다.

내 코드는 다음과 같습니다 (다른 경우 제외) :

extension KUYPEP {
//pencetGambarnya1 for imageView1.image
@objc func pencetGambarnya1(tapGestureRecognizer1: UITapGestureRecognizer) {
            let imagePickerController = UIImagePickerController()
            imagePickerController.delegate = self
            let gambarDipencet1 = tapGestureRecognizer1.view as! UIImageView

            let act1 = UIAlertController(title: "Choose Image", message: nil, preferredStyle: .actionSheet)

            act1.addAction(UIAlertAction(title: "Camera", style: .default, handler: {(UIAlertAction) in
                if UIImagePickerController.isSourceTypeAvailable(.camera) {
                    imagePickerController.sourceType = .camera;
                    self.present (imagePickerController, animated: true, completion: nil)
                } else {

                    print ("Camera ruksak")
                }
            }))
            act1.addAction(UIAlertAction(title: "Library", style: .default, handler: {(UIAlertAction) in
                imagePickerController.sourceType = .photoLibrary
                self.present(imagePickerController, animated: true, completion: nil)
            }))
            act1.addAction(UIAlertAction(title: "Cancel", style: .cancel, handler: {(UIAlertAction)in}))

            self.present(act1, animated: true, completion: nil)
            print ("berhasil11")

        }

//pencetGambarnya2 for imageView2.image
    @objc func pencetGambarnya2(tapGestureRecognizer2: UITapGestureRecognizer) {

        let imagePickerController2 = UIImagePickerController()
        imagePickerController2.delegate = self
        let gambarDipencet2 = tapGestureRecognizer2.view as! UIImageView

        let act2 = UIAlertController(title: "Choose Image", message: nil, preferredStyle: .actionSheet)

        act2.addAction(UIAlertAction(title: "Camera", style: .default, handler: {(UIAlertAction) in
            if UIImagePickerController.isSourceTypeAvailable(.camera) {
                imagePickerController2.sourceType = .camera;
                self.present (imagePickerController2, animated: true, completion: nil)
            } else {

                print ("Camera ruksak")
            }
        }))
        act2.addAction(UIAlertAction(title: "Library", style: .default, handler: {(UIAlertAction) in
            imagePickerController2.sourceType = .photoLibrary
            self.present(imagePickerController2, animated: true, completion: nil)
        }))
        act2.addAction(UIAlertAction(title: "Cancel", style: .cancel, handler: {(UIAlertAction)in}))

        self.present(act2, animated: true, completion: nil)
        print ("berhasil22")
    }

    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
            let image1 = info[UIImagePickerControllerOriginalImage] as! UIImage
            imageView1.image = image1


        let image2 = info[UIImagePickerControllerOriginalImage] as! UIImage
        imageView2.image = image2

        picker.dismiss(animated: true, completion: nil)
        print ("Slavic Hardbass")
    }

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

그리고 여기 내 viewDidLoad 가있다

let tapGestureRecognizer1 = UITapGestureRecognizer(target: self, action: #selector(pencetGambarnya1(tapGestureRecognizer1:)))
    imageView1.isUserInteractionEnabled = true
    imageView1.addGestureRecognizer(tapGestureRecognizer1)

    let tapGestureRecognizer2 = UITapGestureRecognizer(target: self, action: #selector(pencetGambarnya2(tapGestureRecognizer2:)))
    imageView2.isUserInteractionEnabled = true
    imageView2.addGestureRecognizer(tapGestureRecognizer2)

  • 답변 # 1

    targetImage라는 공개 UIImage를 하나 만들고 다음과 같이합니다. imagePickerController를 제시하기 직전에 image1 또는 image2의 참조를 targetImage에 할당하십시오. 이미지 선택이 끝나면 선택한 이미지를 targetImage로 설정하십시오. 다음 코드에서 볼 수 있습니다. targetImage = imageView1을 설정했습니다.

    act1.addAction(UIAlertAction(title: "Camera", style: .default, handler: {(UIAlertAction) in
                    if UIImagePickerController.isSourceTypeAvailable(.camera) {
                        imagePickerController.sourceType = .camera;
                        targetImage = imageView1
                        self.present (imagePickerController, animated: true, completion: nil)
                    } else {
    
                        print ("Camera ruksak")
                    }
                }))
    
    

    imageView2에서도 마찬가지입니다. 그런 다음 선택한 미디어를 설정하도록 코드를 수정 한 후

    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
                let image1 = info[UIImagePickerControllerOriginalImage] as! UIImage
                targetImage.image = image1
            picker.dismiss(animated: true, completion: nil)
            print ("Slavic Hardbass")
        }
    
    

    이것을 테스트하지는 않았지만 제대로 작동합니다.

  • 답변 # 2

    이 코드를 사용해보십시오. 그것이 당신을 위해 작동하기를 바랍니다

    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
        if picker == imagePickerController
        {
             let image1 = info[UIImagePickerControllerOriginalImage] as! UIImage
             imageView1.image = image1
        }
       else
        {
            let image2 = info[UIImagePickerControllerOriginalImage] as! UIImage
            imageView2.image = image2
        }
       picker.dismiss(animated: true, completion: nil)
        print ("Slavic Hardbass")
    }
    
    

  • 답변 # 3

    var 를 추가하여 해결  이 코드를 사용하는 수업에서

    답변

    답장 주셔서 감사합니다.

관련 자료

  • 이전 excel - VLOOKUP은 N/A를 반환하지만 수식을 평가 한 후 올바른 결과를 표시합니다
  • 다음 firebase - Firestore에서 많은 수의 레코드를 삭제하는 방법