2

I have used vision kit for document scanning. I'm able to scan and save the documents, but the old scanned images are shown on the bottom left corner of the screen after coming back to this screen after dismissal. How to clear the scan array after dismissal?

Code:

let vc = VNDocumentCameraViewController()

override func viewDidLoad() {
     super.viewDidLoad() 
     vc.delegate = self 
}

//Save button action in document VC

    func documentCameraViewController(_ controller: VNDocumentCameraViewController, didFinishWith scan: VNDocumentCameraScan) {
            print("Found \(scan.pageCount)")
            var imgArray: Array<UIImage> = []
            for i in 0 ..< scan.pageCount {
                let image = scan.imageOfPage(at: i)
                imgArray.append(image)
            }
            dismiss(animated: true) {
                self.getFileName(img: imgArray)
            }
        }

Marked the scanned images icon at the bottom left

  • Is your VNDocumentCameraViewController destroyed after it has finished scanning? May be you reuse it's instance? – andrey.krukovskiy Nov 02 '20 at 17:11
  • Can you pls say where should I destroy the VNDocumentCameraViewController?. `func documentCameraViewControllerDidCancel(_ controller: VNDocumentCameraViewController) { // You are responsible for dismissing the controller. controller.dismiss(animated: true) }` – Gnanapriya C Nov 04 '20 at 12:50
  • I referred https://dev.to/nemecek_f/ios-how-to-scan-documents-in-under-10-lines-of-code-1g5d to scan documents. @andrey.krukovskiy – Gnanapriya C Nov 04 '20 at 12:55
  • Show the code where you create instance of VNDocumentCameraViewController – andrey.krukovskiy Nov 05 '20 at 14:25
  • @andrey.krukovskiy `let vc = VNDocumentCameraViewController().override func viewDidLoad() { super.viewDidLoad() vc.delegate = self } ` – Gnanapriya C Nov 16 '20 at 16:11

1 Answers1

2

Seems, you keep link to instance of VNDocumentCameraViewController in vc constant of your view controller object. And when you show it second time, the same instance is reused.

Try create and present it like this:

func showDocumentCamera() {
   let vc = VNDocumentCameraViewController()
   vc.delegate = self
   present(vc, animated: true)
}