如何将UIViewController传递给Swift中的另一个类?

时间:2016-11-06 15:29:32

标签: ios swift swift3

如何将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'

更好的方法是什么?

1 个答案:

答案 0 :(得分:3)

在视图控制器初始化之前,您无法访问self。你可以把它变成一个懒惰的变量:

fileprivate lazy var header: RidingViewHeader = {
    return RidingViewHeader(controller: self)
}()