如何将UIViewController传递给Swift中的另一个类?
我有SomeViewController
课程:
class RidingViewController: UIViewController {
fileprivate let header = RidingViewHeader(controller: self)
override func viewDidLoad() {
super.viewDidLoad()
header.setNavigationBar()
}
...
}
我想分开一些代码并在另一个类中设置它的标题。我创建了这个类
class RidingViewHeader {
var controller: UIViewController
let navigationBar= UINavigationBar()
let navigationItem = UINavigationItem()
init(controller: UIViewController) {
self.controller = controller
}
...
}
在这种情况下,我收到一个错误:
Cannot convert value of type '(NSObject) -> () -> UIViewController' to expected argument type 'UIViewController'
更好的方法是什么?
答案 0 :(得分:3)
在视图控制器初始化之前,您无法访问self
。你可以把它变成一个懒惰的变量:
fileprivate lazy var header: RidingViewHeader = {
return RidingViewHeader(controller: self)
}()