2015-07-11 111 views
0

我有一个自定义类的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) 

实现它的最佳方式是什么?

回答

3

首先,创建自定义视图类

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

相关问题