Я пытаюсь перейти к другому контроллеру при появлении предупреждения. Он перемещается к следующему контроллеру, как и ожидалось, но как только он перешел на другой контроллер, он снова показывает то же самое предупреждение. Пожалуйста, проверьте код ниже.
func decode(decodedURL: String) {
let alertController = UIAlertController(title: "", message: "Confirm", preferredStyle: .alert)
let viewController = self.storyboard?.instantiateViewController(withIdentifier: "FormViewController") as? FormViewController
viewController?.fillData(dataDic: convertJsonStringToDictionary(jsonString: decodedURL))
let action1 = UIAlertAction(title: "Ok", style: .default) { (action) in
self.navigationController?.show(viewController!, sender: true)
}
let action2 = UIAlertAction(title: "Cancel", style: .cancel) { (action:UIAlertAction) in
print("You've pressed cancel");
}
alertController.addAction(action1)
alertController.addAction(action2)
self.present(alertController, animated: true, completion: nil)
}
Вызов метода выше
func metadataOutput(_ output: AVCaptureMetadataOutput, didOutput metadataObjects: [AVMetadataObject], from connection: AVCaptureConnection) {
// Check if the metadataObjects array is not nil and it contains at least one object.
if metadataObjects.count == 0 {
qrCodeFrameView?.frame = CGRect.zero
messageLabel.text = "No code detected"
return
}
// Get the metadata object.
let metadataObj = metadataObjects[0] as! AVMetadataMachineReadableCodeObject
if supportedCodeTypes.contains(metadataObj.type) {
// If the found metadata is equal to the QR code metadata (or barcode) then update the status label's text and set the bounds
let barCodeObject = videoPreviewLayer?.transformedMetadataObject(for: metadataObj)
qrCodeFrameView?.frame = barCodeObject!.bounds
if metadataObj.stringValue != nil {
decode(decodedURL: metadataObj.stringValue!)
messageLabel.text = metadataObj.stringValue
}
}
}