Мне интересно, должен ли я выбрать OnChange с помощью привязки или просто использовать закрытие для прохождения значений из пользовательского представления о сканировании штрих -кода
var body: some View {
NavigationStack(path: $path) {
VStack {
// BarcodeScanner(barcode_value: scannedCodeOption == .scanned ? $barcode_value : $passed_barcode_value)
BarcodeScanner() { code in
if scannedCodeOption == .scanned {
print("called \(code)")
}
}
}.onChange(of: barcode_value) { old, new in
print("old \(old), new: \(new)")
}
}
}
< /code>
Это код, комментарий является привязкой, в сочетании с Onchange, но в последнее время я изменил на закрытие < /p>
// @Binding var barcode_value: String?
let tapped: (String) -> ()
< /code>
Сканер штрих -кода использует Visionkit для сканирования штрих -кода, я полагаю, что это iOS 16+, вот пример кода, который получает отсканированный код < /p>
// Class that manages interactions between DataScannerViewController and SwiftUI.
class Coordinator: NSObject, DataScannerViewControllerDelegate {
var parent: BarcodeScanner
init(_ parent: BarcodeScanner) {
self.parent = parent
}
func dataScanner(_ dataScanner: DataScannerViewController, didTapOn item: RecognizedItem) {
switch item {
case .barcode(let barcode):
if let payload = barcode.payloadStringValue {
// parent.barcode_value = payload
parent.tapped(payload)
} else {
print("⚠️ Barcode has no payload string value")
}
default:
print("❌ Not a barcode")
}
}
}
func updateUIViewController(_ uiViewController: DataScannerViewController, context: Context) {
if !uiViewController.isScanning {
try? uiViewController.startScanning()
}
}
Мне интересно, должен ли я выбрать OnChange с помощью привязки или просто использовать закрытие для прохождения значений из пользовательского представления о сканировании штрих -кода [code]var body: some View { NavigationStack(path: $path) { VStack { // BarcodeScanner(barcode_value: scannedCodeOption == .scanned ? $barcode_value : $passed_barcode_value) BarcodeScanner() { code in if scannedCodeOption == .scanned { print("called \(code)") } } }.onChange(of: barcode_value) { old, new in print("old \(old), new: \(new)") } } } < /code> Это код, комментарий является привязкой, в сочетании с Onchange, но в последнее время я изменил на закрытие < /p> // @Binding var barcode_value: String? let tapped: (String) -> () < /code> Сканер штрих -кода использует Visionkit для сканирования штрих -кода, я полагаю, что это iOS 16+, вот пример кода, который получает отсканированный код < /p> // Class that manages interactions between DataScannerViewController and SwiftUI. class Coordinator: NSObject, DataScannerViewControllerDelegate { var parent: BarcodeScanner