为什么使用 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)
我正在尝试根据条件在 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)