如何在其他地方使用 barcodescanner 的结果?
How to use result from barcodescanner somewhere else?
所以我有一个条形码扫描按钮,我想按下它并扫描一个项目,然后检索条形码并在另一个按钮中使用检索到的条形码(这将发送带有条形码的 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
[=10=].reader = QRCodeReader(metadataObjectTypes: [.qr, .ean13], captureDevicePosition: .back)
// Configure the view controller (optional)
[=10=].showTorchButton = true
[=10=].showSwitchCameraButton = false
[=10=].showCancelButton = true
[=10=].showOverlayView = true //shows the square area of the QRCode Scanner
[=10=].rectOfInterest = CGRect(x: 0, y: 0, width: 1, height: 1)
//[=10=].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
}
}
你已经差不多了。这里缺少的是一个额外的变量,用于存储条形码扫描结果。
在你的视图控制器上添加如下内容:
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
}
您现在应该可以继续构建视图了。
所以我有一个条形码扫描按钮,我想按下它并扫描一个项目,然后检索条形码并在另一个按钮中使用检索到的条形码(这将发送带有条形码的 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
[=10=].reader = QRCodeReader(metadataObjectTypes: [.qr, .ean13], captureDevicePosition: .back)
// Configure the view controller (optional)
[=10=].showTorchButton = true
[=10=].showSwitchCameraButton = false
[=10=].showCancelButton = true
[=10=].showOverlayView = true //shows the square area of the QRCode Scanner
[=10=].rectOfInterest = CGRect(x: 0, y: 0, width: 1, height: 1)
//[=10=].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
}
}
你已经差不多了。这里缺少的是一个额外的变量,用于存储条形码扫描结果。
在你的视图控制器上添加如下内容:
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
}
您现在应该可以继续构建视图了。