我的应用程序中有几个类做同样的事情并具有相同的实例变量:
// one of the many classes I have
// they all load nibs and update the frames of their views
class HelpView: UIView {
@IBOutlet var view: UIView!
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)!
NSBundle.mainBundle().loadNibNamed("HelpView", owner: self, options: nil)
self.addSubview(self.view)
self.view.frame = self.bounds
}
}
我想避免重复的代码,因此考虑使用一个超类,这样所有的类都可以继承它。
// my new superclass all classes will inherit from
class ReusableView: UIView {
@IBOutlet var view: UIView! // all subclasses have different views
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)!
// every class has a different nib name
NSBundle.mainBundle().loadNibNamed("Nib name goes here", owner: self, options: nil)
self.addSubview(self.view)
self.view.frame = self.bounds
}
}
问题在于,在nib文件加载之前,
view
是nil
,因此似乎无法调用该超类的方法,因为你正在传递一个空对象。我该如何处理?