2016-11-06 71 views
0

如何将UIViewController传递给Swift中的另一个类? 我有SomeViewController类:如何将UIViewController传递给Swift中的另一个类?

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

你在哪一行得到这个,是在'fileprivate let header = RidingViewHeader(controller:self)'? – EmilioPelaez

+0

@EmilioPelaez yes – Danny

回答

3

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

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

谢谢,现在我看到问题出在哪里了 – Danny

相关问题