J'essaie de travailler sur un appareil photo personnalisé. C'est dans l'enfance. J'ai utilisé quelques tutoriels en ligne mais depuis les dernières modifications, le code est obsolète. J'ai fait de mon mieux pour l'ajuster. Cependant, j'ai frappé le mur suivant. Quand je suis dans l'application, je peux prendre la photo et voir la photothèque, mais quand je prends la photo et la sélectionne, elle n'apparaît pas, donc quand j'appuie sur le bouton de sauvegarde, l'application s'écrase et la console tout en déballant une valeur facultative.La caméra Swift 3 ne sauvegarde pas
Toute aide sur la correction de ce problème et l'obtention de l'image à afficher dans l'interface utilisateur pour l'enregistrement serait grandement appréciée. Voici le code:
import UIKit
class ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationBarDelegate {
let imagePicker = UIImagePickerController()
@IBOutlet weak var pickedImage: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
imagePicker.delegate = self as? UIImagePickerControllerDelegate & UINavigationControllerDelegate
}
@IBAction func camerabuttonaction(_ sender: UIButton) {
if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.camera){
let imagePicker = UIImagePickerController()
imagePicker.delegate = self as? UIImagePickerControllerDelegate & UINavigationControllerDelegate
imagePicker.sourceType = UIImagePickerControllerSourceType.camera;
imagePicker.allowsEditing = false
self.present(imagePicker, animated: true, completion: nil)
}
}
@IBAction func photolibraryaction(_ sender: UIButton) {
if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.photoLibrary){
let imagePicker = UIImagePickerController()
imagePicker.delegate = self as? UIImagePickerControllerDelegate & UINavigationControllerDelegate
imagePicker.sourceType = UIImagePickerControllerSourceType.photoLibrary;
imagePicker.allowsEditing = true
self.present(imagePicker, animated: true, completion: nil)
}
}
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]){
var chosenImage = UIImage()
chosenImage = info[UIImagePickerControllerOriginalImage] as! UIImage
pickedImage.contentMode = .scaleAspectFit
pickedImage.image = chosenImage
dismiss(animated:true, completion: nil)
}
func saveNotice(){
let alertController = UIAlertController(title: "Image Saved!", message: "Your picture was successfully saved.", preferredStyle: .alert)
let defaultAction = UIAlertAction(title: "OK", style: .default, handler: nil)
alertController.addAction(defaultAction)
present(alertController, animated: true, completion: nil)
}
@IBAction func saveaction(_ sender: UIButton) {
let imageData = UIImageJPEGRepresentation(pickedImage.image!, 0.6)
let compressedJPEGImage = UIImage(data: imageData!)
UIImageWriteToSavedPhotosAlbum(compressedJPEGImage!, nil, nil, nil)
saveNotice()
}
}
Remerciez vous tellement pour cela. Je peux voir l'image maintenant mais quand je clique sur sauvegarder l'application se bloque et se ferme. Ceci est le code que je reçois dans la console de débogage: ** ViewController savebuttonaction:]: sélecteur non reconnu envoyé à l'instance 0x157e0eca0 2017-07-10 23: 00: 28.511302 + 0100 Cam Stats [1983: 612888] *** Application de terminaison due à l'exception uncaught 'NSInvalidArgumentException', raison: '- [Cam_Stats.ViewController savebuttonaction:]: sélecteur non reconnu envoyé à l'instance 0x157e0eca0' ** – Purelaise
s'il vous plaît vérifier si ce bouton est connecté à l'ibaction que vous avez fourni car à mon extrémité ce code fonctionne bien, j'ai vérifié sur l'appareil et le simulateur aussi. et si vous faites toujours face au même problème, supprimez ibAction du bouton du storyboard et reconnectez-vous à ibaction made. si toujours une erreur se produit, je vais partager mon projet avec vous et aussi vérifier les clés dans info.plist pour l'accès caméra et galerie NscameraUsage et NsPhotoLibrary –
Merci, j'ai tout vérifié à nouveau et rediffuser mais le problème persiste. Il charge AppDelagate.swift et charge la ligne suivante en surbrillance ** redclass AppDelegate: UIResponder, UIApplicationDelegate {** ne sait pas où est le problème? – Purelaise