将视图从 XIB 加载到 ViewController 和 VIewCell
Posted
技术标签:
【中文标题】将视图从 XIB 加载到 ViewController 和 VIewCell【英文标题】:Loading view from XIB into ViewController and VIewCell 【发布时间】:2015-07-11 15:21:40 【问题描述】:我有一个带有自定义类 ProfileHeaderView 的 XIB。 我也有 ProfileViewController 和 ProfileTableViewCell,它们都带有 IBOutlet profileHeader。
我想要的是将 nib 加载到 profileHeader 中。到目前为止,我通过加载 NIB 然后将其添加为 profileHeader 的子视图来做到这一点,我想这不是最好的解决方案,我必须手动设置框架。
let view = NSBundle.mainBundle().loadNibNamed("ProfileHeaderView", owner: self, options: nil).last as! ProfileHeaderView
view.setFrame(...)
self.profileHeaderView.addSubview(self.view)
实现它的最佳方法是什么?
【问题讨论】:
【参考方案1】:首先,创建自定义视图类
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 拖到 ViewController 并将 UIView 的自定义类设置为CustomView
【讨论】:
以上是关于将视图从 XIB 加载到 ViewController 和 VIewCell的主要内容,如果未能解决你的问题,请参考以下文章
将 UITabBarController 从单独的 XIB 加载到 iPhone 上的 Window 应用程序中