2017-01-11 1 views
0

사용자 위치 정보를 저장할 클래스가 있습니다 & 위치 가져 오기 등이 클래스 개체는 내 홈 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