2016-11-06 74 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

相關問題