这有点奇怪,但基本上我的代码如下:
import UIKit
class BarcodeScanPopover: UIViewController, UIPopoverPresentationControllerDelegate {
@IBOutlet weak var navbar: UINavigationItem!
@IBOutlet weak var product: UILabel!
@IBOutlet weak var productimage: UIImageView!
@IBOutlet weak var scanner: UIView!
var scan: MTBBarcodeScanner = MTBBarcodeScanner(previewView: scanner);
override func viewDidLoad() {
所以我遇到的问题是我无法宣布"扫描"在没有启动MTBBarcodeScanner
对象的情况下,但同时,我无法调用MTBBarcodeScanner
对象而不会调用" scanner"这在文件的顶部是不可能的。不幸的是,MTBBarcodeScanner()
不是有效的初始化并导致崩溃,因此也不可能。
我需要这样做,因为我需要访问"扫描"在代码中的不同点 - 不只是在一个代码方法中。
有什么建议吗?
答案 0 :(得分:1)
如果您确定在加载视图后将始终拥有MTBBarcodeScanner
的实例,请将其声明为MTBBarcodeScanner!
:var scan: MTBBarcodeScanner!
。这使得它成为一个隐式解包的可选项,除非您尝试访问它上面的某些属性/函数,否则允许它为nil
。
因此,您应该确保在以任何其他方式访问它之前始终为其分配内容。这可以而且应该在viewDidLoad
中完成:
scan = MTBBarcodeScanner(previewView: scanner)
答案 1 :(得分:1)
您可以让MTBBarCodeScanner
个实例成为可选项,并最初将其设置为nil
。
var scan: MTBBarcodeScanner? = nil
此后,只要scanner
实例可用,请立即致电初始值设定项以更新其值(例如,在viewDidLoad
中)。