2017-03-17 1 views
0

아래 코드는 다음과 같습니다. 기본적으로 사용자에게 카메라 button1을 선택하거나 사진 라이브러리 button1 중에서 선택할 수있는 옵션을 제공하려고합니다. 그런 다음 버튼에 따라 이미지 뷰 1에 추가됩니다. 그런 다음 동일한 뷰 컨트롤러에서 카메라 버튼 2와 이미지 라이브러리 2로 이동하는 사진 라이브러리 버튼 2가있는 디스플레이의 아래쪽 절반에 복제됩니다.하나의보기 컨트롤러에서 서로 다른 두 개의 이미지 뷰를위한 두 개의 서로 다른 카메라 버튼을 사용할 수 있습니까? (Swift 3)

class ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate, UITextFieldDelegate { 

    @IBOutlet weak var ImageView1: UIImageView! 
    @IBOutlet weak var ImageView2: UIImageView! 
    @IBOutlet weak var textField1: UITextField! 
    @IBOutlet weak var textField2: UITextField! 

var imagePicker = UIImagePickerController() 
    var cameraImagePicker = UIImagePickerController() 
    var imagePicked = 0 
    var cameraPicked = 0 

override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 
imagePicker.delegate = self 
     imagePicker.sourceType = .photoLibrary 
     imagePicker.allowsEditing = false 
     cameraImagePicker.delegate = self 
     cameraImagePicker.sourceType = .camera 
     cameraImagePicker.allowsEditing = false 
     textField1.delegate = self 
     textField2.delegate = self 
} 

    @IBAction func uploadImageBtnClick1(_ sender: UIButton) { 

     if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.photoLibrary){ 
      print("Working") 

      imagePicked = sender.tag 

      self.present(imagePicker, animated: true, completion: nil) 
     } 
    } 
    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) { 

     if let pickedImage = info[UIImagePickerControllerOriginalImage] as? UIImage { 

      if imagePicked == 0{ 
       ImageView1.image = pickedImage 
      } else if imagePicked == 1{ 
       ImageView2.image = pickedImage 
      } else { 

       print("Something went wrong") 
      } 
      if cameraPicked == 2 { 
       ImageView1.image = pickedImage 
      } else if cameraPicked == 3 { 
       ImageView2.image = pickedImage 
      } 
     } else { 

      print("Something went wrong") 
     } 
     dismiss(animated: true, completion: nil) 
    } 
    @IBAction func CameraButtonTapped(_ sender: UIButton) { 

     cameraPicked = sender.tag 

     if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.camera) { 
      print("working") 


      self.present(cameraImagePicker, animated: true, completion: nil) 

     } 
    } 
} 
+0

게시 한 코드가 일반적으로 원하는대로 수행 한 것으로 보이므로 귀하의 질문이나 문제는 무엇입니까? – rmaddy

+0

어떤 이유로 카메라 button2를 누르고 사진을 찍을 때 두 이미지 뷰를 채 웁니다. 이미지가 두 개의 이미지 뷰 사이를 오가며 카메라 버튼을 사용할 때마다 바뀝니다. – FreitDev

답변

0

문제는 두 가지 변수를 사용하여 어떤 이미지보기를 업데이트해야하는지 추적하는 것입니다. 이미지보기를 업데이트 한 후 두 변수를 모두 재설정하거나 하나의 변수 만 사용하십시오.

2 개의 UIImagePickerController 인스턴스가 필요하지 않습니다.

마지막으로 4 개의 버튼 모두를 업데이트하십시오. ImageView1에 영향을 미치는 두 개의 버튼의 경우 해당 태그를 1로 설정하십시오. ImageView2에 영향을 미치는 두 개의 버튼에 대해서는 해당 태그를 2로 설정하십시오. 0 태그를 사용하지 마십시오. 모든보기의 기본 태그는 0입니다.

BTW - 선도 소문자가있는 이름 변수 및 함수. 클래스 및 구조체 이름 만 대문자로 시작해야합니다.

class ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate, UITextFieldDelegate { 
    @IBOutlet weak var imageView1: UIImageView! 
    @IBOutlet weak var imageView2: UIImageView! 
    @IBOutlet weak var textField1: UITextField! 
    @IBOutlet weak var textField2: UITextField! 

    var imagePicked = 0 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     textField1.delegate = self 
     textField2.delegate = self 
    } 

    @IBAction func uploadImageBtnClick1(_ sender: UIButton) { 
     if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.photoLibrary){ 
      print("Working") 

      imagePicked = sender.tag 

      let imagePicker = UIImagePickerController() 
      imagePicker.delegate = self 
      imagePicker.sourceType = .photoLibrary 
      imagePicker.allowsEditing = false 

      self.present(imagePicker, animated: true, completion: nil) 
     } 
    } 

    @IBAction func cameraButtonTapped(_ sender: UIButton) { 
     if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.camera) { 
      print("working") 

      imagePicked = sender.tag 

      let imagePicker = UIImagePickerController() 
      imagePicker.delegate = self 
      imagePicker.sourceType = .camera 
      imagePicker.allowsEditing = false 

      self.present(imagePicker, animated: true, completion: nil) 
     } 
    } 

    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) { 
     if let pickedImage = info[UIImagePickerControllerOriginalImage] as? UIImage { 
      if imagePicked == 1 { 
       imageView1.image = pickedImage 
      } else if imagePicked == 2 { 
       imageView2.image = pickedImage 
      } else { 
       print("Something went wrong") 
      } 
     } else { 
      print("Something went wrong") 
     } 
     dismiss(animated: true, completion: nil) 
    } 
} 
+0

도와 주셔서 대단히 감사합니다. @rmaddy. 피드백은 새로운 개발자로서 지금 내 미래 프로젝트에 대해 알기 때문에 나에게 매우 중요합니다. 그것은 나를 위해 지금 일합니다. – FreitDev

관련 문제