Я занимаюсь разработкой приложения, в котором используется камера, и затем предполагается, что фотография будет отправлена на другой ViewController, но я не уверен, что, возможно, это не удастся или она просто будет выполнена, но когда я подтверждаю фотографию, мое приложение рухнуло, и в моем журнале не отображаются ошибки.
Это контроллер просмотра камеры
import UIKit
import AVFoundation
class ViewController: UIViewController ,
UIImagePickerControllerDelegate, UINavigationControllerDelegate{
var img = UIImageView()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
@IBAction func photo(_ sender: Any) {
checkCameraPermissions()
}
private func checkCameraPermissions() {
let status = AVCaptureDevice.authorizationStatus(for: .video)
switch status {
case .authorized:
print("1")
presentPicker()
case .notDetermined:
print("2")
askPermision()
case .denied:
print("3")
// user denied access
self.permissionDenied()
case .restricted:
print("Error restricted")
}
}
private func presentPicker() {
if UIImagePickerController.isSourceTypeAvailable(UIImagePickerController.SourceType.camera) {
let imagePicker = UIImagePickerController()
imagePicker.delegate = self
imagePicker.sourceType = UIImagePickerController.SourceType.camera
imagePicker.allowsEditing = false
self.present(imagePicker, animated: true, completion: nil)
}
}
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
if let pickedImage = info[UIImagePickerController.InfoKey.originalImage] as? UIImage{
img.image = pickedImage
}
performSegue(withIdentifier: "captured", sender: nil)
}
private func askPermision(){
AVCaptureDevice.requestAccess(for: AVMediaType.video) {granted in
if granted {
self.presentPicker()
} else {
print("Denied")
}
}
}
private func permissionDenied() {
let alert = UIAlertController(title: "Access to camera is denied", message: "You have denied the access to the camera. Would you like to able it?", preferredStyle: .alert)
let actionOK = UIAlertAction(title: "Ok", style: .default) { (UIAlertAction) in
self.askPermision()
}
let cancel = UIAlertAction(title: "Cancel", style: .default) { (action) in
print("Cancel")
}
alert.addAction(actionOK)
alert.addAction(cancel)
present(alert, animated : true, completion: nil)
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if(segue.identifier == "captured"){
let vc = segue.destination as! ImageReportedVC
vc.imgAux = img.image!
}
}
}
И затем, это второй VC, который нене появляется. Я считаю, что переход не должен быть сделан там или что-то, но если вы вставите это в другую часть кода, он выполняется перед тем, как сделать фотографию.
import UIKit
class ImageReportedVC: UIViewController {
var imgAux = UIImage()
@IBOutlet weak var imgReported: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
imgReported.image = imgAux
// Do any additional setup after loading the view.
}
}
Спасибо