如何在其他地方使用条形码扫描仪的结果?

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


您现在应该可以继续构建视图了。

【讨论】:

天哪,我一直在摸不着头脑,答案很简单。你不知道我有多感激,这段代码将帮助很多人以更简单的方式完成他们的工作! :)

以上是关于如何在其他地方使用条形码扫描仪的结果?的主要内容,如果未能解决你的问题,请参考以下文章

我想用java设计一个条形码扫描器,将扫描的数字在数据库中查找详细信息,请问如何实现?解决有+

如何使条码扫描仪只扫描一次(谷歌移动视觉 API)?

如何在 Web 应用程序中使用条形码扫描仪

Javascript:如何最好地读取手持条码扫描仪?

如何检测键盘楔形扫描仪条形码输入到网络输入并阻止键盘输入

如何识别条形码?