我想扩大UIViewController
nib
注册。
因此,我们可以做类似的事情而不是PastOrdersViewController(nibName: "PastOrdersViewController", bundle: nil)
extension UIViewController {
func loadNib(vc: UIViewController,nibName: String) -> UIViewController{
return vc(nibName: nibName, bundle: nil)//Error: Cannot call value of non-function type 'UIViewController'
}
}
但是,我收到以下错误: -
错误:无法调用非函数类型'UIViewController'的值
该错误发生在vc
参数指向UIViewController
的实例的事实中,以及该方法看起来如何在控制器类上调用初始化器。
您可以使用Self
,并删除第一个参数,这将使loadFromNib
方法非常简单。您可以进行的另一个优化是将nib名称声明为可选,并为其指定默认值nil
:
extension UIViewController {
static func loadFromNib(_ nibName: String? = nil) -> Self {
return self.init(nibName: nibName, bundle: nil)
}
}
然后你就可以很好地使用这样的方法:
let vc = MyViewController.loadFromNib() // loads from MyViewController.nib
, 要么
let vc = MyViewController.loadFromNib("Custom") // loads from Custom.nib