Error: Cannot call value of non-function type
Error: Cannot call value of non-function type
我正在尝试 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'
}
}
但是,我收到以下错误:-
Error:Cannot call value of non-function type 'UIViewController'
错误发生的原因是 vc
参数指向 UIViewController
的一个实例,并且该方法看起来像您想要调用控制器上的初始化程序 class.
您可以使用 Self
,并删除第一个参数,这将使 loadFromNib
方法非常简单。您可以进行的另一项优化是将笔尖名称声明为可选,并为其指定默认值 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
我正在尝试 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'
}
}
但是,我收到以下错误:-
Error:Cannot call value of non-function type 'UIViewController'
错误发生的原因是 vc
参数指向 UIViewController
的一个实例,并且该方法看起来像您想要调用控制器上的初始化程序 class.
您可以使用 Self
,并删除第一个参数,这将使 loadFromNib
方法非常简单。您可以进行的另一项优化是将笔尖名称声明为可选,并为其指定默认值 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