2016-11-06 8 views
0

UIViewControllerをSwiftの別のクラスに渡すにはどうすればいいですか? 私はSomeViewControllerクラスがあります。Swiftの別のクラスにUIViewControllerを渡すには?

class RidingViewController: UIViewController { 
    fileprivate let header = RidingViewHeader(controller: self) 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     header.setNavigationBar() 
    } 
    ... 
} 

をそして、私はいくつかのコードを分離し、別のクラスでは、そのヘッダを設定したいです。 Cannot convert value of type '(NSObject) ->() -> UIViewController' to expected argument type 'UIViewController'

それを行うための良い方法は何ですか:私は、私はエラーを取得し、このクラスこの場合

class RidingViewHeader { 

    var controller: UIViewController 
    let navigationBar= UINavigationBar() 
    let navigationItem = UINavigationItem() 

    init(controller: UIViewController) { 
     self.controller = controller 
    } 
    ... 
} 

を作成しましたか?

+0

これは 'fileprivate let header = RidingViewHeader(controller:self)'の中にありますか? – EmilioPelaez

+0

@EmilioPelaezはい – Danny

答えて

3

ビューコントローラが初期化されるまで、selfにアクセスすることはできません。あなたはそれを怠惰な変数にすることができます:

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

ありがとう、今どこに問題があるか分かります – Danny

関連する問題