在很长一段时间里,我一直在使用xib文件自定义视图.
在这种情况下,我需要做以下事情:
xib-file和swift-file.swift-file中的类.继续工作,并在需要时创建视图,如下所示:
public extension UIView {
class func fromXib() -> UIView {
return NSBundle.mainBundle().loadNibNamed(self.nameOfClass, owner: nil, options: nil).first as! UIView
}
Run Code Online (Sandbox Code Playgroud)好的,它有效,没问题.但在不同的项目中,我开始更多地使用Storyboard.我希望在那里显示自定义视图,尽管它们是在xib-file 中设计的(例如,当视图出现在多个屏幕上时,我会这样做).
所以,为了解决这个任务,我做了下一步:
xib-file和swift-file.File's owner了swift-file的类.(因此UIView默认情况下,我的视图类没有设置).我将以下代码添加到视图的生命周期方法中:
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
setup()
}
override init(frame: CGRect) {
super.init(frame: frame)
setup()
}
func setup() {
let v = NSBundle(forClass: self.dynamicType).loadNibNamed(self.nameOfClass, owner: self, options: nil).first …Run Code Online (Sandbox Code Playgroud)