这是我正在尝试做的事情: 在 nib 文件中设计一个 View 。使用用 Swift 编写的类支持 View 和 nib 所有者。在 Swift 中实例化 nib 的 View 。崩溃的代码:
var myViewOwner: MyViewOwner?
NSBundle.mainBundle().loadNibNamed("MyView", owner: myViewOwner, options: nil) // crash
...错误:
[NSObject 0x7bfa0cc0 setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key myView.
因此,我有:带有空白 View 的 nib 文件,其中 View 的类型为 MyClass
,nib 所有者的类型为 MyViewOwner
。两个类都用 Swift 编写。
我已经尝试过的(初次尝试):
我将只发布 MyViewOwner 类代码,因为 MyView.swift 只是一个类定义。
MyViewOwner.swift
class MyViewOwner {
@IBOutlet weak var myView: MyView
}
导致上述错误。
第二次尝试使用 NSObject:
当然 Swift 对象不符合 KVO,所以我尝试:
class MyViewOwner: NSObject {
@IBOutlet var myView: MyView
}
...和:
class MyViewOwner: NSObject {
@IBOutlet strong var myView: MyView = MyView() // we need to set something since it's 'strong'
}
两者都导致了上面的错误。
第 3 次尝试使用 @objc 注释:
@objc class MyViewOwner: NSObject {
@objc @IBOutlet strong var myView: MyView = MyView()
}
也没有帮助,同样的错误。
我做错了什么?我应该以何种方式快速编写所有代码以使其工作?
更新:xCode 中的所有者和 View 设置
更新:所有者查看连接
最佳答案
这段代码,如果它真的是你的代码,是没有意义的:
var myViewOwner: MyViewOwner?
NSBundle.mainBundle().loadNibNamed("MyView", owner: myViewOwner, options: nil)
第一行 中的变量myViewOwner
未初始化;那里没有物体。因此,该对象不能作为任何东西的 owner:
,正如您在 second 行中要求的那样。
也许你的意思是:
let myViewOwner = MyViewOwner() // or whatever the initializer is
NSBundle.mainBundle().loadNibNamed("MyView", owner: myViewOwner, options: nil)
关于ios - 用 Swift 编写的类不能是 Nib 所有者(崩溃),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24841020/