Swift: Storyboard TabViewController Segue 未被触发
Swift: Storyboard TabViewController Segue Not Being Triggered
我正在开发一个 iOS 应用程序,该应用程序允许用户将食品的条形码扫描到购物清单中。我的目标是,当扫描仪拾取条形码时,它会获取元数据并将其(通过 segue)发送到另一个视图,用户可以在该视图中将商品记录到他们的购物清单中。我的错误是,当扫描仪拾取条形码并成功 returns 元数据时,它调用 performSegueWithIdentifier()
(第 30 行)但实际上并没有进入下一个视图。它会不断扫描条形码并输出我的打印语句,如下所示。父视图是一个带有三个选项卡的 TabBarViewController,其中一个是扫描仪。我正在使用可以找到 here 的 RSBarcodes
框架。以下是说明我的错误的屏幕截图。
条码扫描器Class
终端输出
故事板转折
模拟器视图
您应该在展示另一个 viewcontroller 之前停止扫描。在框架中找到停止或解除分配扫描器的实现方法。
如Sachin Rocken所说,您需要停止捕获会话以避免多次扫描。只需使用 self.session.stopRunning()
即可占用捕获会话。此外,在 ScanItemViewController
内完成的任何 UI 操作都需要在主线程上完成。您的 self.barcodesHandler
应该建模:
self.barcodesHandler = { barcodes in
// print barcode found
self.barcodeVal = barcodes[0].stringValue
self.session.stopRunning() // Stops scanning processs to avoid multiple scans
dispatch_async(dispatch_get_main_queue(), { () -> Void in
self.performSegueWithIdentifier("presentAddItem", sender: self)
}) // Any UI operation needs to be done on main thread
}
我正在开发一个 iOS 应用程序,该应用程序允许用户将食品的条形码扫描到购物清单中。我的目标是,当扫描仪拾取条形码时,它会获取元数据并将其(通过 segue)发送到另一个视图,用户可以在该视图中将商品记录到他们的购物清单中。我的错误是,当扫描仪拾取条形码并成功 returns 元数据时,它调用 performSegueWithIdentifier()
(第 30 行)但实际上并没有进入下一个视图。它会不断扫描条形码并输出我的打印语句,如下所示。父视图是一个带有三个选项卡的 TabBarViewController,其中一个是扫描仪。我正在使用可以找到 here 的 RSBarcodes
框架。以下是说明我的错误的屏幕截图。
条码扫描器Class
终端输出
故事板转折
模拟器视图
您应该在展示另一个 viewcontroller 之前停止扫描。在框架中找到停止或解除分配扫描器的实现方法。
如Sachin Rocken所说,您需要停止捕获会话以避免多次扫描。只需使用 self.session.stopRunning()
即可占用捕获会话。此外,在 ScanItemViewController
内完成的任何 UI 操作都需要在主线程上完成。您的 self.barcodesHandler
应该建模:
self.barcodesHandler = { barcodes in
// print barcode found
self.barcodeVal = barcodes[0].stringValue
self.session.stopRunning() // Stops scanning processs to avoid multiple scans
dispatch_async(dispatch_get_main_queue(), { () -> Void in
self.performSegueWithIdentifier("presentAddItem", sender: self)
}) // Any UI operation needs to be done on main thread
}