OnChange vs сбежав за закрытие в Swift UIIOS

Программируем под IOS
Ответить
Anonymous
 OnChange vs сбежав за закрытие в Swift UI

Сообщение Anonymous »

Мне интересно, должен ли я выбрать 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()
}
}
Что более эффективно?

Подробнее здесь: https://stackoverflow.com/questions/797 ... n-swift-ui
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»