继承另一个视图控制器?

问题描述:

我正在关注使用Apple AVCam代码的过时指南。继承另一个视图控制器?

https://developer.apple.com/library/content/samplecode/AVCam/Introduction/Intro.html#//apple_ref/doc/uid/DTS40010112-Intro-DontLinkElementID_2

苹果提供了一个 “CameraViewController”。教师制作一个“摄像头”VC,将苹果的摄像头VC分类。在Apple的代码中,因为它与AVCamera一起工作,所以有一个实际显示相机输出的预览视图。在视频的家伙改变

@IBOutlet weak var previewView : PreviewView //Apple's PreviewView class 

,并更改为

var _previewView : PreviewView 

然后他经过苹果公司的代码和更改所有的previewView对_previewView,然后在自己的视图控制器有这样的:

class hisViewController: ApplesViewController { 

    @IBOutlet weak var previewView : PreviewView! 

    override func viewDidLoad() { 

     self._previewView = previewView 
     super.viewDidLoad() 

    } 

} 

当他运行它时,他让相机运行。当我运行这个时,我得到一个EXC断点错误:意外地发现零,同时展开一个可选值

我已经将previewView连接到了我的故事板。

在指南中,他在Swift项目中使用苹果的Objective-C代码,但现在Apple已经发布了Swift代码。

任何想法如何使这项工作/为什么错误发生?

在加载视图之前,不会分配IBOutlets。您正尝试在super.viewDidLoad触发之前访问IBOutlet,因此视图尚未出现在屏幕上,并且previewView为零。

你可以把它放在super.viewDidLoad后面,如果需要的话根据超类的代码刷新视图(self.view.layoufIfNeeded())