2017-01-11 9 views
0

私は、ユーザージオ情報&を取得するためのクラスを持っています。このクラスオブジェクトは、my Home ViewControllerで使用されます。オブジェクト関数の後のスワイプコールバック

例:

class Geo { 

    ... 
    getLocation() 
    getRoute() 
    ... 

} 

class ViewController { 
    var geo = Geo() 
    geo.getRoute() 

    // I want a call a function after getRoute is complete. 
} 

私は私のViewControllerは、ジオクラスのオブジェクトのデリゲートであるデリゲートを、使用している知っている一つの方法。しかし、いずれかのストレート&シンプルなメソッドは、ジオオブジェクトのメソッドのいずれかの原因は、アプリケーション内の任意のコントローラで使用されます。

+0

使用completionHandler。 –

答えて

3

コメントに示唆されているように、完了時に呼び出す関数をgetRouteに渡すことができます。あなたは

func getRoute(_ completionHandler: (() -> Void)?) {...} 

、その後getRoute実装コールの終わりにのようなものにgetRouteの宣言を変更する必要があります:

if let completion = completionHandler { 
    completion() 
} 

を、あなたが呼び出すときgetRouteあなたは、単に機能を渡す必要があります最後の引数として呼び出されたい:

geo.getRoute() { 
    // do something when getRoute is finished 
} 
+0

ありがとう、あなたの答えは私のために働いた!もう一つの質問があります。別の場所で、同じコードを使用すると動作しません。主な機能は、コントロールを位置代理人に渡すためです。コントロールが他の非同期関数に渡されたときにこのシナリオを処理する方法。 – demonofthemist

+0

おそらくそのコードの例を挙げて、何がうまくいかないかについてもう少し詳しく説明できますか? (新しい質問がこの質問と十分に異なる場合は、おそらく新しいSO質問をしても、まったく同じであればこの質問を編集することもできます) – Keiwan

関連する問題