2017-09-15 2 views
-1

J'ai un doute quant à la façon de développer une partie de mon code. Je crée une application dans Swift 3.0 et atteint un point, il y a un bouton qui aura l'appareil photo de l'iPhone natif.Aller à un autre "View Controller" avec caméra native

Ce que je veux est:

  • Lorsque vous prenez une photo et appuyez sur le bouton « Utiliser Photo », passer à un autre contrôleur de vue. Comment puis-je le faire?

    Le code que je vais avoir la caméra est

    @IBAction func openInterfaceTakePhoto(_ sender: Any) { 
    
        if UIImagePickerController.isSourceTypeAvailable(.camera) { 
         var imagePicker = UIImagePickerController() 
         imagePicker.delegate = self 
         imagePicker.sourceType = .camera; 
         imagePicker.allowsEditing = false 
         self.present(imagePicker, animated: true, completion: nil) 
        } 
    } 
    

J'ai écrit le texte suivant pour détecter quand on presse sur UsePhoto et sauter à ViewController:

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

    let takedPhotoVC: TakedPhotoVC = UIStoryboard(name: "TakedPhoto", bundle: 
    nil).instantiateViewController(withIdentifier: "TakedPhotoVC") as! 
    TakedPhotoVC 
    self.navigationController?.pushViewController(takedPhotoVC, animated: false)} 

} 

Mais le terminal affiche l'erreur suivante: Le cliché instantané d'une vue qui n'a pas été a donné un instantané vide. Assurez-vous que votre vue a été ..

  • Et un autre doute, dans le simulateur Xcode pouvez-vous ouvrir l'appareil photo?

Merci beaucoup

+1

Qu'est-ce que vous voulez réellement réaliser? Pourquoi voulez-vous aller à un autre contrôleur sur la caméra cliquez sur? – Nilesh

+1

"Et un autre doute, dans le simulateur Xcode pouvez-vous ouvrir l'appareil photo" Non. En fait, vous ne devriez même pas _mention_ l'appareil photo dans le simulateur. – matt

+0

Je veux capturer une photo et quand nous cliquons sur le bouton "Utiliser Photo" l'App va passer à un autre "View Controller" où il sera divisé en deux parties, la partie supérieure contiendra la carte montrant l'emplacement où la photo a été prise et la deuxième partie, un carré, où nous pouvons mettre la description. Merci :) ! –

Répondre

1

Lorsque l'utilisateur tape le bouton Utiliser photo, votre contrôleur voir l'image délégué est appelé. Il peut recevoir l'image, rejeter le contrôleur de vue d'image, et aller à un autre contrôleur de vue.

Si cela ne vous suffit pas, vous devriez repenser votre approche. Vous ne pouvez pas facilement modifier l'interface de vue UIImagePickerController. Il est intentionnellement simple d'esprit et ne vous appartient pas. Si vous voulez un bouton Utiliser une photo dont vous avez le contrôle, vous feriez mieux de concevoir votre propre interface de prise de vue en utilisant AVFoundation.

+0

J'ai écrit le texte suivant pour détecter quand nous appuyons sur UsePhoto et passons à ViewController: func imagePickerController (_ sélecteur: UIImagePickerController, didFinishPickingMediaWithInfo info: [Chaîne: Any]) {let takedPhotoVC: TakedPhotoVC = UIStoryboard (nom: "TakedPhoto", bundle: nil) .instantiateViewController (withIdentifier: "TakedPhotoVC") as! TakedPhotoVC self.navigationController? .pushViewController (takedPhotoVC, animé: false)} Mais le terminal affiche l'erreur suivante: L'instantané d'une vue qui n'a pas été restituée résulte en un instantané vide. Assurez-vous que votre point de vue a été ... –

+0

Ensuite, vous auriez dû le dire dans votre question. Vous ne pouvez pas obtenir de l'aide si vous dissimulez complètement votre code actuel, n'est-ce pas? Nous ne sommes pas des lecteurs d'esprit. – matt

+0

Je me suis mal exprimé dans le message précédent. Le code que j'ai écrit auparavant était grâce à vous :). Mais, je reçois l'erreur que je vous dis "Snapshotting une vue qui n'a pas été rendue résulte dans un instantané vide. Assurez-vous que votre vue a été ...". Qu'est-ce que je peux faire? Je vous remercie. –