是否可以从 swift 中的二维码读取触发 segue

Is it possible to trigger a segue from a qr code reading in swift

我有一个快速的 ios swift 编程问题。是否可以从 swift 中的 QR 码读取触发 segue?我在 Google 上查找并发现了这个 app coda 教程。我仍然不明白我将如何使用 segue 来做这件事。有人可以解释他们是如何在应用程序中做到这一点的吗?谢谢!

更新

感谢 Christian Woerz 提供的有用提示!

我知道怎么做了!

当这个函数:

func captureOutput(captureOutput: AVCaptureOutput!, didOutputMetadataObjects metadataObjects: [AnyObject]!, fromConnection connection: AVCaptureConnection!) {

// Check if the metadataObjects array is not nil and it contains at least one object.
if metadataObjects == nil || metadataObjects.count == 0 {
    qrCodeFrameView?.frame = CGRectZero
    messageLabel.text = "No QR code is detected"
    return
}

// Get the metadata object.
let metadataObj = metadataObjects[0] as AVMetadataMachineReadableCodeObject

if metadataObj.type == AVMetadataObjectTypeQRCode {
    // If the found metadata is equal to the QR code metadata then update the status label's text and set the bounds
    let barCodeObject = videoPreviewLayer?.transformedMetadataObjectForMetadataObject(metadataObj as AVMetadataMachineReadableCodeObject) as AVMetadataMachineReadableCodeObject
    qrCodeFrameView?.frame = barCodeObject.bounds;

    if metadataObj.stringValue != nil {
        messageLabel.text = metadataObj.stringValue
    }
  }
}

被解雇了,像这样在函数内部做一个performSegueWithIdentifier(_ identifier: String?, sender sender: AnyObject?)

func captureOutput(captureOutput: AVCaptureOutput!, didOutputMetadataObjects metadataObjects: [AnyObject]!, fromConnection connection: AVCaptureConnection!) {

// Check if the metadataObjects array is not nil and it contains at least one object.
if metadataObjects == nil || metadataObjects.count == 0 {
    qrCodeFrameView?.frame = CGRectZero
    messageLabel.text = "No QR code is detected"
    return
}

// Get the metadata object.
let metadataObj = metadataObjects[0] as AVMetadataMachineReadableCodeObject

if metadataObj.type == AVMetadataObjectTypeQRCode {
    // If the found metadata is equal to the QR code metadata then update the status label's text and set the bounds
    let barCodeObject = videoPreviewLayer?.transformedMetadataObjectForMetadataObject(metadataObj as AVMetadataMachineReadableCodeObject) as AVMetadataMachineReadableCodeObject
    qrCodeFrameView?.frame = barCodeObject.bounds;

    if metadataObj.stringValue != nil {
        messageLabel.text = metadataObj.stringValue
    }
  }

**performSegueWithIdentifier(_ identifier: String?, sender sender:  AnyObject?)**

}

并像

一样传入 segue 的标识符

Identifier: thetransition

未经测试的代码,但有逻辑:)

是的,这是可能的。

但我们只能给你一个笼统的答案,因为有许多不同的方法和库可以读取二维码。但举个小例子,您可以使用 this tutorial 中的 QR 码 reader。 如果您使用本教程中提供的代码读取 QR 码,将调用一个方法来接收 QR 码的数据。在教程中它是 captureOutput.

然后在此方法中,如果调用该方法,您可以添加代码以执行 segue。