0

Ich präsentiere eine UIImagePickerController, um ein Foto zu machen, ist das Problem, wenn ich ein Foto mache, oder die UIImagePickerController Abbrechen Ich werde auf einem weißen Bildschirm und nicht auf meine vorherige ViewController zurückkehren. Nur meine navigation bar immer noch hier. Wenn ich auf ein anderes view (mit der Navigationsleiste) klicke, ist es in Ordnung, und wenn ich auf die Registerkarte, wo UIImagePickerController heißt es immer noch weiß.weißer Bildschirm nach der Gegenwart ein UIImagePickerController

let picker = UIImagePickerController(); 
picker.delegate = self; 
picker.mediaTypes = [swiftString]; 
picker.allowsEditing = true 

picker.sourceType = UIImagePickerControllerSourceType.camera; 
picker.cameraCaptureMode = .photo 
self.present(picker, animated:true, completion:nil); 

entlassen:

picker.dismiss(animated: true, completion:nil); 

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

Wenn jemand eine Idee Dankten haben!

aktualisieren:

Weiß-Bildschirm erscheint immer, wenn ich eine Ansicht mit present method nennen. Also ich denke, es ist Konflikt mit der Navigationscontroller (Hierarchie ...)

Das ist mein Problem lösen:

guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else {return} 
appDelegate.navigationController.present(picker, animated: true, completion: nil) 

Wenn jemand eine andere Alternative hat, es zu lösen!

+0

Wie Sie 'UIImagePickerController' werden entlassen? – Poles

+0

@Poles Natürlich ist Post bearbeitet, um es zu zeigen – Makaille

+0

Sind Sie sicher, dass Sie Ihre Klasse eine Unterklasse von UINavigationControllerDelegate gemacht, die von der Bildauswahl erforderlich ist? – pbush25

Antwort

0

Verwenden Sie picker.modalPresentationStyle = UIModalPresentationStyle.OverCurrentContext, bevor Sie den Imagepicker präsentieren.

+0

Das macht meine Sicht komplett aus, jeder Button funktioniert nicht und der Picker wird nicht angezeigt. – Makaille

+0

Ok. Verwenden Sie 'imagePicker.parent? .dismiss (animiert: true, completion: nil)', während Sie den Imagepicker ablehnen. – Poles

+0

Das Problem ist nicht von der Picker, ich habe in der App untersucht und es ist immer ich benutze aktuelle Methode.Es ist wie ein Konflikt zwischen Gegenwart und der NavigationController – Makaille

0

Hier ist der Code, den ich für die Kamera verwenden:

func openCameraApp() { 
    if UIImagePickerController.availableCaptureModes(for: .rear) != nil { 
     picker.allowsEditing = false 
     picker.sourceType = UIImagePickerControllerSourceType.camera 
     picker.cameraCaptureMode = .photo 
     picker.modalPresentationStyle = .fullScreen 
     present(picker, 
       animated: true, 
       completion: nil) 
    } else { 
     noCamera() 
    } 
} 
func noCamera(){ 
    let alertVC = UIAlertController(
     title: "No Camera", 
     message: "Sorry, this device has no camera", 
     preferredStyle: .alert) 
    let okAction = UIAlertAction(
     title: "OK", 
     style:.default, 
     handler: nil) 
    alertVC.addAction(okAction) 
    present(
     alertVC, 
     animated: true, 
     completion: nil) 
} 

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) { 
    let chosenImage = info[UIImagePickerControllerOriginalImage] as! UIImage // do you have this line in your code? 
    image = chosenImage 
    self.performSegue(withIdentifier: "ShowEditView", sender: self) 
    dismiss(animated: true, completion: nil) 
} 
func imagePickerControllerDidCancel(_ picker: UIImagePickerController) { 
    dismiss(animated: false, completion: nil) 
} 

ich ein paar Dinge anders bemerken.

  • Sie setzen .allowsEditing auf True. Ich glaube nicht, dass das einen Unterschied macht.
  • Ich suche nach einer Kamera, aber Sie haben diesen Code wahrscheinlich nicht in Ihre Frage aufgenommen.
  • Ich setze .modalPresentationStyle auf Vollbild. Dies könnte dein Problem sein.
  • Ich sehe nicht den imagePickerController(picker: didFinishPickingMediaWithInfo) Aufruf. Aber da es nicht bauen sollte, ist das definitiv nicht das Thema.
  • Innerhalb dieses Anrufs entpacke ich das Bild von info. Ich glaube, das ist dein Problem. Ich habe einen Kommentar zu dieser bestimmten Zeile geschrieben und Sie gebeten, dies zu überprüfen.
  • Schließlich führe ich einen Übergang zu einem anderen View-Controller. (Meine App ist im Grunde ein "Kopie" und dann "Bearbeiten".)
+0

Hallo, danke für Ihre Hilfe, aber es ändert nichts. Ich werde den Beitrag aktualisieren, das Problem kommt von Call Present-Methode mit meinem Navigationscontroller – Makaille

0

die .modalPresentationStyle in dem Vollbild Set

+0

bereits vorgeschlagen, funktioniert nicht – Makaille

Verwandte Themen