将视图从XIB加载到ViewController和VIewCell中
问题描述:
我有一个自定义类的XIB ProfileHeaderView。 我也有 ProfileViewController和 ProfileTableViewCell,都与 IBOutlet profileHeader。将视图从XIB加载到ViewController和VIewCell中
我想要的是加载笔尖到 profileHeader。到目前为止,我通过加载NIB然后将其添加为子视图 profileHeader,我认为这不是最佳解决方案,我必须手动设置帧。
let view = NSBundle.mainBundle().loadNibNamed("ProfileHeaderView", owner: self, options: nil).last as! ProfileHeaderView
view.setFrame(...)
self.profileHeaderView.addSubview(self.view)
实现它的最佳方式是什么?
答
首先,创建自定义视图类
class CustomView: UIView {
// MARK: Custom View Initilization
var view: UIView!
func xibSetup() {
view = loadViewFromNib()
view.frame = bounds
view.autoresizingMask = UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleHeight
addSubview(view)
//// additional setup here
}
func loadViewFromNib() -> UIView {
let bundle = NSBundle(forClass: self.dynamicType)
// set nibName to be xib file's name
let nib = UINib(nibName: "CustomView", bundle: bundle)
let view = nib.instantiateWithOwner(self, options: nil)[0] as! UIView
return view
}
override init(frame: CGRect) {
super.init(frame: frame)
xibSetup()
}
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
xibSetup()
}
}
其次,在CustomView.xib
设置File's owner
自定义类来CustomView
你做了之后,。您可以编程方式创建自定义视图。
let customView = CustomView(frame: frame)
self.view.addSubview(customView)
或者用故事板,通过拖放的UIView到视图控制器和设置的UIView的定制类CustomView