2014-09-24 4 views
0

그래서 최근에 사용하기 시작했습니다 스위프트 그리고 기본적으로 나는 UILabel을 사용하여 오류 메시지를 표시합니다. 이 라벨은 숨겨져 있습니다 (스토리 보드의 숨겨진 체크 표시를 통해 viewDidLoad에서도 숨김으로 설정 했음).레이블을 재현하는 데 몇 초 걸립니다

사용자가 로그인을 클릭하면 apicontroller 클래스가 자격 증명을 확인하기 위해 백엔드 서버에 게시합니다. apicontroller에는 completionHandler에서 호출되는 대리자가 (NSURLSession.dataTaskWithRequest)에 있습니다. viewcontroller의 프로토콜 메소드는 http 상태를 확인하고 200이면 다음보기로 이동합니다. erorrlabel가 숨김 해제 있어야하는 경우

, 나는 그것이 거짓에 println에 숨겨진 숙박 시설의 설정 :이 200이 아니라면 그러나, 뷰 컨트롤러는 오류 레이블을

여기 (self.errorLabel.hidden = false and self.erorLabel.text = "ERROR MESSAGE HERE").

내 문제가 숨김 해제 ("지금은 숨겨져 있어야합니다") 경고를 표시합니다. 경고 및 인쇄 명령문은 즉시 실행됩니다. 그러나 레이블이 표시되기까지 몇 초가 걸립니다.

나는 이것을 시뮬레이터와 실제 5s에서 4s, 5s, 6s에서 시도해 본 결과 여전히이 문제가 발생합니다. 또한 수동으로 self.view.setNeedsDisplay()으로보기를 새로 고치려고했지만 여전히 작동하지 않습니다.

아이디어가 있으십니까?

+0

당신은 코드의 관련 부분을 포함해야하거나 더 나은 충분한 코드를 포함 다른 사람들이 문제를 재현 할 수있게합니다. – Postlagerkarte

답변

1

주 스레드가 아닌 스레드에서 레이블을 업데이트하는 중입니다.

이 블록 내부의 코드를 묶

dispatch_async(dispatch_get_main_queue()) { 
    // Update the label here 
} 
+0

고맙습니다. – Saad

0

감사 안토니오에이 질문에 저를 참고로하는 것에 대한. 그것은 참 내가 여기 물어 내 문제를 해결했습니다 https://stackoverflow.com/questions/26800093/setting-iboutlet-in-closure-result-in-swift

이 나를 위해 일한 코드의 마지막 블록 :

homeModel.GetHomeData({(textResult:String!) in 

     dispatch_async(dispatch_get_main_queue()) 
     { 
      // Update the textview in the ui here 
      self.homeTextView.text = textResult 
     } 
    }); 
관련 문제