如何在其他地方使用条形码扫描仪的结果?
Posted
技术标签:
【中文标题】如何在其他地方使用条形码扫描仪的结果?【英文标题】:How to use result from barcodescanner somewhere else? 【发布时间】:2020-12-26 21:49:04 【问题描述】:所以我有一个条形码扫描按钮,我想按下它并扫描一个项目,然后检索条形码并在另一个按钮中使用检索到的条形码(这将发送一个带有条形码的 api 请求),我该怎么做?
如果有人能指出我正确的方向,我会很高兴,似乎无法在网上找到任何答案(可能是搜索错误的东西)。
提前致谢!
这是我的部分代码:
import UIKit
import AVFoundation
import QRCodeReader
import Alamofire
class NewViewController: UIViewController, QRCodeReaderViewControllerDelegate
lazy var readerVC: QRCodeReaderViewController =
let builder = QRCodeReaderViewControllerBuilder
//change object to scan and the initial position of the camera
$0.reader = QRCodeReader(metadataObjectTypes: [.qr, .ean13], captureDevicePosition: .back)
// Configure the view controller (optional)
$0.showTorchButton = true
$0.showSwitchCameraButton = false
$0.showCancelButton = true
$0.showOverlayView = true //shows the square area of the QRCode Scanner
$0.rectOfInterest = CGRect(x: 0, y: 0, width: 1, height: 1)
//$0.rectOfInterest = CGRect(x: 0.12, y: 0.3, width: 0.8, height: 0.6)
return QRCodeReaderViewController(builder: builder)
()
override func viewDidLoad()
super.viewDidLoad()
// Do any additional setup after loading the view.
readerVC.delegate = self
func reader(_ reader: QRCodeReaderViewController, didScanResult result: QRCodeReaderResult)
//code to be added
reader.stopScanning()
print(result)
print(result.value) //I WANT TO USE THIS RESULT SOMEWHERE ELSE //ANOTHER BUTTON
dismiss(animated: true, completion: nil)
func readerDidCancel(_ reader: QRCodeReaderViewController)
//code to be added
reader.stopScanning()
dismiss(animated: true, completion: nil)
@IBAction func BARCODESCANNER(_ sender: UIButton)
readerVC.modalPresentationStyle = .formSheet
self.present(readerVC, animated: true)
//THIS BUTTON OPENS THE BARCODE SCANNER AND RETRIEVES RESULT IN THE "func reader" ABOVE
@IBAction func ANOTHERBUTTON(_ sender: Any)
// I WANT TO USE THE RETRIEVED BARCODE HERE WITH MORE CODE FOR AN API REQUEST
【问题讨论】:
【参考方案1】:你几乎在那里。这里缺少的是一个额外的变量供您存储条形码扫描结果。
在您的视图控制器上添加如下内容:
private var barcode: String? = nil
当你得到reader(_: QRCodeReaderViewController, didScanResult: QRCodeReaderResult)
的结果时,它可以被赋值。
现在,由于 barcode
作为可选属性添加,因此在您的 ANOTHERBUTTON
函数中,您可以使用 guard
轻松确保在函数执行任何操作之前设置条形码值。
所以看起来像:
@IBAction func ANOTHERBUTTON(_ sender: Any)
guard let barcode = barcode else return
// ... your code using the barcode goes here
您现在应该可以继续构建视图了。
【讨论】:
天哪,我一直在摸不着头脑,答案很简单。你不知道我有多感激,这段代码将帮助很多人以更简单的方式完成他们的工作! :)以上是关于如何在其他地方使用条形码扫描仪的结果?的主要内容,如果未能解决你的问题,请参考以下文章