gpt4 book ai didi

swift - 如何清除Label.text中的信息?

转载 作者:行者123 更新时间:2023-11-28 08:29:00 26 4
gpt4 key购买 nike

我正在开发一个二维码阅读器应用程序。这是我的代码:

  var captureSession: AVCaptureSession?
var videoPreviewLayer: AVCaptureVideoPreviewLayer?
var qrCodeframeView: UIView?

@IBOutlet weak var CancelButton: UIButton!
@IBOutlet weak var Label: UILabel!
override func viewDidLoad() {

CancelButton.hidden = true
Label.hidden = true


super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}


@IBAction func ScanMe(sender: AnyObject) {

CancelButton.hidden = false
Label.hidden = false


let captureDevice = AVCaptureDevice.defaultDeviceWithMediaType(AVMediaTypeVideo)

var error: NSError?
let input: AnyObject!

do {
input = try AVCaptureDeviceInput (device: captureDevice)
} catch let error1 as NSError{

error = error1
input = nil

}

if (error != nil){
print ("\(error?.localizedDescription)")
return
}
captureSession = AVCaptureSession()

captureSession?.addInput(input as! AVCaptureInput)

let captureMetadatOutput = AVCaptureMetadataOutput()
captureSession?.addOutput(captureMetadatOutput)

captureMetadatOutput.setMetadataObjectsDelegate(self, queue: dispatch_get_main_queue())
captureMetadatOutput.metadataObjectTypes = [AVMetadataObjectTypeQRCode]

videoPreviewLayer = AVCaptureVideoPreviewLayer(session: captureSession)
videoPreviewLayer?.videoGravity = AVLayerVideoGravityResizeAspectFill
videoPreviewLayer?.frame = view.layer.bounds
view.layer.addSublayer(videoPreviewLayer!)

captureSession?.startRunning()
view.bringSubviewToFront(Label)
view.bringSubviewToFront(CancelButton)

qrCodeframeView = UIView()
qrCodeframeView?.layer.borderColor = UIColor.greenColor().CGColor
qrCodeframeView?.layer.borderWidth = 2
view.addSubview(qrCodeframeView!)
view.bringSubviewToFront(qrCodeframeView!)


}

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

if metadataObjects == nil || metadataObjects.count == 0 {

qrCodeframeView?.frame = CGRectZero
Label.text = "No QR code detected"
return
}
let metadateObj = metadataObjects[0] as! AVMetadataMachineReadableCodeObject

if metadateObj.type == AVMetadataObjectTypeQRCode {

let BarcodeObject = videoPreviewLayer?.transformedMetadataObjectForMetadataObject(metadateObj as AVMetadataMachineReadableCodeObject) as! AVMetadataMachineReadableCodeObject
qrCodeframeView?.frame = BarcodeObject.bounds

if metadateObj.stringValue != nil {

Label.text = metadateObj.stringValue

captureSession?.stopRunning()



}
}
}


@IBAction func Cancel(sender: AnyObject) {
CancelButton.hidden = true
Label.hidden = true


captureSession?.stopRunning()
qrCodeframeView?.removeFromSuperview()
videoPreviewLayer?.removeFromSuperlayer()


}

@IBAction func Open(sender: AnyObject) {

}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
var PC : SecondSecondViewController = segue.destinationViewController as! SecondSecondViewController
PC.label1 = Label.text!
}


}

问题是当我单击取消按钮并返回到之前的 View Controller 时,当我重新打开二维码扫描器时,我看到最后扫描的代码,显示在 Label.text 中。请问如何清除标签,不显示旧代码,因为这些代码只能使用一次,如果用户看到代码,他们将能够再次使用它们。

最佳答案

如果你想不添加其他回调:

override func prepareForSegue(segue: UIStoryboardSegue, sender:   AnyObject?) {
var PC : SecondSecondViewController = segue.destinationViewController as! SecondSecondViewController
PC.label1 = Label.text!
Label.text = ""
}

否则,当您从 SecondSecondViewController 返回并在那里设置 Label.text = ""

时,您必须 catch unwind segue

关于swift - 如何清除Label.text中的信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39301267/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com