Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/106.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 当使用loadNibNamed加载视图时,如何在UIView上调用方便的初始化器?_Ios_Iphone_Swift_Uiview_Swift3 - Fatal编程技术网

Ios 当使用loadNibNamed加载视图时,如何在UIView上调用方便的初始化器?

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) }

如何调用从.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)
    }
}
现在,如果我想从相关的.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)