为什么使用 nibName 初始化视图控制器不会将新实例设置为文件所有者?

Why does initializing a view controller with nibName not set the new instance as file owner?

我正在尝试根据条件在 master/detail 的详细视图中显示一个视图或另一个视图。

这些视图将包含 outlets 和元素,所以我想为每个视图控制器都可以使用。

所以我创建了一个名为 AddPhotoViewController 的新 UIViewController。这就是我在 DetailViewController:

中添加 AddPhotoViewController.xib 的方式
let photoVC = AddPhotoViewController(nibName: "AddPhotoViewController", bundle: nil)
let photoView = photoVC.view

photoVC.delegate = self

photoView.autoresizingMask = UIViewAutoresizing.FlexibleWidth
photoView.frame = area.bounds
area.addSubview(photoView)

视图在详细视图中正确加载,如下所示:

AddPhotoViewController.xib 的所有者 class 也已在此处设置:

当我点击按钮时,虽然在 AddPhotoViewController 中正确设置了打印消息的操作,但 Xcode 崩溃了。

我这样做正确吗? 根据用户数据在视图控制器中加载视图 X 或视图 Y 是否有更常见的做法?


按钮操作:

@IBAction func ButtonPressed(sender: AnyObject) {
    println("worked!")
}

按钮连接:

控制台输出:

我认为您需要添加 viewController:

addChildViewController(PhotoVC)
//and then
PhotoVC.didMoveToParentViewController(self)