2017-03-03 4 views
1

Je souhaite que l'utilisateur prenne 2 photos différentes en utilisant 2 images et boutons différents (un côté gauche et un côté droit). Je sais comment faire cela en utilisant Imagepicker Delegate mais pas avec 2 images différentes. Les deux images auront des photos différentes et utiliseront un bouton différent pour prendre la photo. Fondamentalement, les côtés gauche et droit n'ont rien à faire les uns avec les autres. simulator picUtiliser le sélecteur d'image pour enregistrer des photos dans 2 vues différentes (swift3)

Code

import UIKit 

class _vc: UIViewController { 

@IBOutlet var leftImage: UIImageView! 
@IBOutlet var rightImage: UIImageView! 


override func viewDidLoad() { 
    super.viewDidLoad() 

    // Do any additional setup after loading the view. 
} 

@IBAction func takePhotoLeft(_ sender: Any) { 
} 
@IBAction func takePhotoRgith(_ sender: Any) { 
}} 

Répondre

1

Au lieu de définir tag l'option simple est de faire une propriété d'instance du nom de type UIImageViewcurrentImageView dans votre ViewController puis dans votre action de bouton gauche et à droite que définir currentImageView avec leftImage et rightImage. Après cela, dans didFinishPickingMediaWithInfo définir l'image sélectionnée à cette currentImageView.

var currentImageView: UIImageView? 

@IBAction func takePhotoLeft(_ sender: Any) { 
    self.currentImageView = self.leftImage 
    //ImagePicker code 
} 

@IBAction func takePhotoRgith(_ sender: Any) { 
    self.currentImageView = self.rightImage 
    //ImagePicker code 
} 

maintenant dans votre méthode didFinishPickingMediaWithInfo simplement l'image définie sur cette currentImageView.

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) { 
    let image = info[UIImagePickerControllerOriginalImage] as! UIImage 
    self.currentImageView?.image = image 
    self.dismiss(animated: true) 
} 
+0

Est-ce que ça marche maintenant? Ce –

+0

est le code à mettre dans les boutons si UIImagePickerController.isSourceTypeAvailable (UIImagePickerControllerSourceType.camera) { laisser imagePicker = UIImagePickerController() imagePicker.delegate = auto imagePicker.sourceType = UIImagePickerControllerSourceType.camera; imagePicker.allowsEditing = false self.present (imagePicker, animé: vrai, achèvement: aucun) ? –

+0

Vous devez définir l'image à cette imageImage actuelle comme je l'ai mentionné dans ma réponse –

0

Un moyen rapide de le faire serait de définir une variable sur votre viewController de garder une trace de ce qui touche a été pressée plus récemment. Vous pouvez même utiliser quelque chose d'aussi simple qu'un Int, comme var imagePickerButton: Int = 0, et attribuer les numéros aux boutons comme bon vous semble. J'aime utiliser l'attribut tag pour ne pas avoir à y penser. Si vous faites cela, dans votre action de bouton, vous pouvez dire self.imagePickerButton = sender.tag avant de faire votre code de lancement imagePicker.

Ensuite, dans votre méthode didFinishPicking... vous pouvez utiliser switch ou si/autre de décider qui imageView à remplir, comme

switch self.imagePickerButton { 
case 0: 
    leftImageView.image = image 
case 1: 
    rightImageView.image = image 
etc. 
} 

Il y a des tonnes de façons dont vous pouvez gérer cela, mais cela est très facile, rapide.

+0

Pouvez-vous me dire la ligne didFinishPicking merci –