2
我正在嘗試使用RSBarcodes將條形碼掃描添加到我的應用程序。我有兩個問題:無法更新顯示掃描的條形碼的標籤,以及將條形碼發送給我的主叫視圖控制器無法工作的委託。下面是我爲處理該掃描的視圖控制器代碼:Swift條碼掃描
import UIKit
import AVFoundation
import RSBarcodes
class ScanViewController: RSCodeReaderViewController {
@IBOutlet weak var label1Label: UILabel!
@IBOutlet weak var label2Label: UILabel!
@IBOutlet weak var scanLabel: UIButton!
var delegate: barcodesScannedDelegate?
var codes:[String] = []
override func viewDidLoad() {
super.viewDidLoad()
var code=""
// Do any additional setup after loading the view.
focusMarkLayer.strokeColor = UIColor.redColor().CGColor
cornersLayer.strokeColor = UIColor.yellowColor().CGColor
tapHandler = { point in
//println(point)
}
barcodesHandler = { barcodes in
for barcode in barcodes {
if !contains(self.codes, barcode.stringValue) {
self.codes.append(barcode.stringValue)
code = barcode.stringValue
}
}
println(code)
self.label1Label.text = code
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@IBAction func finishedPressed(sender: UIButton) {
delegate?.barcodesScanned(self.codes)
self.dismissViewControllerAnimated(true, completion: nil)
}
@IBAction func cancelPressed(sender: UIButton) {
self.dismissViewControllerAnimated(true, completion: nil)
}
}
只是爲了確保我正確地做了代表,這是我在Protocol.swift代碼:
protocol selectCarrierDelegate {
func selectCarrier(carrierID: String,carrier: String)
}
protocol barcodesScannedDelegate {
func barcodesScanned(barcodes: [String])
}
並且在控制器中應該接收條形碼的相關代碼:
class InBoundViewController: UIViewController,selectCarrierDelegate,UIAlertViewDelegate,UITableViewDelegate,UITableViewDataSource,barcodesScannedDelegate {
func barcodesScanned(barcodes: [String]) {
println("codes=\(barcodes)")
}
任何人都有任何想法爲什麼標籤不會改變,代表不工作?
在InBoundViewController,您是否在ScanViewController對象的委託設置爲自我? – 2014-12-03 19:29:56
當然不是。這會讓人覺得太過分了!我知道我必須錯過簡單的事情。我仍然不確定爲什麼標籤沒有更新,但至少代表工作正常。謝謝! – 2014-12-03 20:14:15