我正在关注使用Apple的AVCam代码的过时指南。
Apple提供了“CameraViewController”。教师制作一个“Camera”VC,它是Apple的cameraVC的子类。在Apple的代码中,因为它正在使用AVCamera,所以有一个实际显示相机输出的预览视图。在视频中,家伙改变了
@IBOutlet weak var previewView : PreviewView //Apple's PreviewView class
并将其更改为
var _previewView : PreviewView
然后他通过apple的代码并将所有的previewView更改为_previewView,然后在他自己的ViewController中有这个:
class hisViewController: ApplesViewController {
@IBOutlet weak var previewView : PreviewView!
override func viewDidLoad() {
self._previewView = previewView
super.viewDidLoad()
}
}
当他跑步时,他让相机跑。当我运行这个时,我得到一个EXC断点错误:在解开一个Optional值时意外地发现了nil
我确实将previewView连接到我的故事板。
在指南中,他在Swift项目中使用了Apple的Objective-C代码,但现在Apple发布了Swift代码。
任何想法如何使这项工作/错误发生的原因?
答案 0 :(得分:2)
在加载视图之前,不会分配IBOutlet。您正试图在super.viewDidLoad触发之前访问IBOutlet,因此该视图尚未出现在屏幕上,并且previewView为零。
你可以把它放在super.viewDidLoad之后,如果需要的话刷新视图,具体取决于超类的代码(self.view.layoufIfNeeded())