with uiimagepickercontrollerdelegate open example ios uiimagepickercontroller swift3 ios10

ios - open - uiimagepickercontrollerdelegate swift 4



UIImagePickerController en Swift 3 (2)

Creo que debes agregar privacy - key para camara y biblioteca de fotos en tu archivo info.plist desde xcode 8 . por ejemplo,

Key : Privacy - Media Library Usage Description Value : YES Key : Privacy - Photo Library Usage Description Value : YES Key : Privacy - Camara Usage Description Value : YES

aquí el valor es string no Boolean .

así que prueba esto.

¡Consulta la documentación de Apple para más detalles!

Referencia: esto para publicar

Recientemente, actualicé a Swift 3 en Xcode 8 usando la versión beta del desarrollador. Estoy intentando implementar Firebase Auth, y todo va bien.

Mi problema:

Estoy intentando subir una imagen como imagen de perfil del usuario a una base de datos de Firebase.

Pensé que podía usar el UIImagePickerController para hacer esto, pero cuando lo hago, obtengo un

"Tema 7: Señal SIGABRT

Sé lo que esto normalmente indicaría, pero lo verifiqué, y mi imagen sí imprime mi declaración de prueba cuando la toco.

Mi método fallido:

ViewController.swift

import UIKit import Firebase import Photos class ViewController: UIViewController, UITextFieldDelegate, UIImagePickerControllerDelegate, UINavigationControllerDelegate{ @IBOutlet weak var imageView: UIImageView! @IBOutlet var emailTextField: UITextField! @IBOutlet var passWordTextField: UITextField! @IBOutlet var nameTextField: UITextField! override func viewDidLoad() { super.viewDidLoad() if FIRAuth.auth()?.currentUser?.uid != nil { let storyboard = UIStoryboard(name: "Main", bundle: nil) let view = storyboard.instantiateViewController(withIdentifier: "ProfileViewController") self.present(view, animated: true, completion: nil) } imageView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(handleSelectProfileImageView))) imageView.isUserInteractionEnabled = true self.emailTextField.delegate = self; self.passWordTextField.delegate = self; self.nameTextField.delegate = self; } func handleSelectProfileImageView() { let picker = UIImagePickerController() picker.delegate = self picker.allowsEditing = true present(picker, animated: true, completion: nil) }

Todavía no estoy seguro de si esto es solo un problema con Swift 3 y el desarrollador Xcode 8 beta, o si lo estoy haciendo de forma incorrecta para swift 3.

EDITAR:

Estoy usando la versión GM de xcode8, pero sigo teniendo el mismo error.


Siga el mensaje de error de xCode y agregue la clave / valor a Info.plist de la aplicación.

Por ejemplo, recibí un mensaje de error de mi aplicación en desarrollo. Me recuerda agregar NSCameraUsageDescription a la aplicación Info.plist.

El mensaje de error de xCode

Esta aplicación se ha bloqueado porque intentó acceder a datos confidenciales sin una descripción de uso. El Info.plist de la aplicación debe contener una clave NSCameraUsageDescription con un valor de cadena que explique al usuario cómo utiliza la aplicación estos datos.

Y más

Agregue el par key/value a Localizable.strings , le dará soporte i18n . Por ejemplo, agrego un par a Localizable.strings (English) . Dará una descripción en inglés cuando pregunte al usuario sobre el permiso de la cámara.

"NSCameraUsageDescription" = "We needs camera permission to capture image.";