Ios 当使用loadNibNamed加载视图时,如何在UIView上调用方便的初始化器?
如何调用从.xib文件加载的视图的方便初始化器? 我的初始化器定义如下:Ios 当使用loadNibNamed加载视图时,如何在UIView上调用方便的初始化器?,ios,iphone,swift,uiview,swift3,Ios,Iphone,Swift,Uiview,Swift3,如何调用从.xib文件加载的视图的方便初始化器? 我的初始化器定义如下: class CustomView : UIView{ var prop1:Int var prop2:Int convenience init(prop1:Int, prop2:Int, frame:CGRect){ self.prop1 = prop1 self.prop2 = prop2 super.init(frame:frame) }
class CustomView : UIView{
var prop1:Int
var prop2:Int
convenience init(prop1:Int, prop2:Int, frame:CGRect){
self.prop1 = prop1
self.prop2 = prop2
super.init(frame:frame)
}
}
现在,如果我想从相关的.xib文件中实例化customView,那么如何执行这个初始化器呢
Bundle.main.loadNibNamed("CustomView", owner: self, options: nil)?.first as! CustomView
谢谢。正如@Paulw所说,你不能。从xib/情节提要加载的视图总是使用
init(编码器:)
初始化。各国:
nib文件中的对象被重新构造,然后使用
他们的初始(编码:) 方法,该方法修改视图的属性
以匹配nib文件中存储的属性
如果要在Interface Builder中设置自定义视图,并且有要设置的自定义属性,则可以将这些属性设置为可检测的i
class CustomView: UIView {
@IBInspectable var prop1: Int
@IBInspectable var prop2: Int
}
然后,当您在Interface Builder中选择该视图时,您将在Attributes inspector中看到它们(请确保首先在Identity inspector中将类设置为类的名称)
有一篇关于iInspectable的好文章。当您从xib加载时,然后调用
init?(coder-aDecoder:NSCoder)
简短回答;您不能。创建视图后设置属性或在nib中指定属性,并按照Adrian的建议使用init(coder)