Image user picks in UIImagePickerController and camera both not working. Where is the [assert] bug coming from?
Here is my Code :
ViewController :
import UIKit
class ViewController: UIViewController, UINavigationControllerDelegate, UIImagePickerControllerDelegate {
@IBOutlet var takePicture: UIButton!
@IBOutlet var editPhoto: UIButton!
var pictures = [String]()
@IBAction func takePicture(_ sender: UIButton) {
camera()
if let vb = storyboard?.instantiateViewController(withIdentifier: "Detail") as? DetailViewController {
navigationController?.pushViewController(vb, animated: true)
}
presentingViewController?.dismiss(animated: true, completion: actionClose)
}
@IBAction func editPhoto(_ sender: UIButton) {
photoGallery()
if let vc = storyboard?.instantiateViewController(withIdentifier: "Detail") as? DetailViewController {
navigationController?.pushViewController(vc, animated: true)
self.dismiss(animated: true)
}
presentingViewController?.dismiss(animated: true, completion: nil)
}
func camera() {
let vc = UIImagePickerController()
vc.sourceType = .camera
vc.allowsEditing = true
vc.delegate = self
present(vc, animated: true)
actionClose()
}
@objc func photoGallery() {
let picker = UIImagePickerController()
picker.allowsEditing = true
picker.delegate = self
present(picker, animated: true)
actionClose()
}
@objc func actionClose() {
presentingViewController?.dismiss(animated: true)
}
override func viewDidLoad() {
super.viewDidLoad()
}
}
DetailViewController :
import UIKit
import CoreImage
class DetailViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
@IBOutlet var imageView: UIImageView!
@IBOutlet var slider1: UISlider!
@IBOutlet var slider2: UISlider!
@IBOutlet var slider3: UISlider!
@IBOutlet var slider4: UISlider!
var currentImage: UIImage!
var context: CIContext!
var currentFilter: CIFilter!
var selectedImage: String?
override func viewDidLoad() {
super.viewDidLoad()
title = "Photo Editor"
context = CIContext()
currentFilter = CIFilter(name: "CISepiaTone")
}
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
guard let image = info[.editedImage] as? UIImage else { return }
dismiss(animated: true)
print("No image found")
currentImage = image
let beginImage = CIImage(image: currentImage)
currentFilter.setValue(beginImage, forKey:kCIInputImageKey)
applyProcessing()
}
func applyProcessing() {
let inputKeys = currentFilter.inputKeys
if let cgimg = context.createCGImage(currentFilter.outputImage!, from: currentFilter.outputImage!.extent) {
let processedImage = UIImage(cgImage: cgimg)
self.imageView.image = processedImage
}
}
}
Thank you, hoping you can help.
the error part is
here you present camera and push to DetailViewController at the same time change your code to this