swift中UIViewController默认加载的xib文件
2016-06-28 本文已影响2143人
小沫360
ios9在使用方法ViewController()
实例化时,会默认加载同名ViewController.xib
, ios8
则默认不加载,这样导致在实例化一个ViewController
的时候,要写一大串代码,下面将提出一种方案解决该问题。
实现ViewController
默认加载同名xib
新建BaseViewController
, 重写init方
法,其他ViewController
继承于Base
override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?) {
super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
}
//3.重写无参数初始化方法,自动调用xib文件
convenience init() {
let nibNameOrNil = String(self.dynamicType)
//考虑到xib文件可能不存在或被删,故加入判断
if NSBundle.mainBundle().pathForResource(nibNameOrNil, ofType: "nib") != nil
{
self.init(nibName: nibNameOrNil, bundle: nil)
}else{
self.init(nibName: nil, bundle: nil)
self.view.backgroundColor = UIColor.whiteColor()
}
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}