2017-10-25 3 views
0

내 설정에 대한 일부 정보를 시작하려면 : 나는 각각의보기에 연결된 3 개의보기 및 3 개의 ViewController가있는 스토리 보드를 가지고 있습니다.IOS Swift 3 UILabels보기에서 올바르게 렌더링되지 않습니다.

self.performSegue(withIdentifier: "bookingSuccess", sender: nil)과 함께 DataTask (http 요청)의 완료 핸들러에서보기를 전환합니다. 일부 데이터를 전달할 수 있도록 필자는 ViewModel을 대상 컨트롤러에 할당하는 준비 함수를 사용합니다.

그런 다음 ViewDidLoad() 함수에서 UI 스터프를 준비하고 ViewWillAppear() 메서드에서 내 라벨에 값을 할당합니다.

잘 작동하지만보기가 전환되면 UI 요소의 절반이 표시되지 않고 단추 텍스트가 표시되지 않습니다. 몇 초를 기다리거나 APP를 닫지 않고 다시 여는 대부분의 시간이 갑자기 나타나기도합니다. 나는 많은 일을 시도했지만 아무 것도 작동하지 않았습니다. 시작은,하지만 난 그게 표시되지 왜 어떤 아이디어를 가지고하지 않은 내 IOS 대상 버전은 하나 IOS 10 IOS 여기 11.0.1/3

는 화면의 두 이미지입니다. Directly after switching the View

After waiting about 10 seconds

+0

확인'self.performSegue (withIdentifier : "bookingSuccess", 보낸 사람 : 전무) 확인'주 스레드에서 호출됩니다, 당신이 백그라운드 스레드에서 UI 물건을하고있는 것처럼 들리네 – Ladislav

+0

안녕하세요, 빠른 답변을 주셔서 감사합니다. DispatchQueue.main.sync { self.performSegue (withIdentifier : "bookingSuccess", 발신자 : nil) } 하지만 ' –

+0

은'async'가 아니라'sync'가됩니다 – Ladislav

답변

1

배경 스레드에서 UI 작업을 수행 할 때 문제가되는 것 같습니다.DataTask의 완료 핸들러에서 3,와 그 배경 스레드에있을 것입니다 그렇게 :

DispatchQueue.main.async { 
    self.performSegue(withIdentifier: "bookingSuccess", sender: nil) 
} 
+1

은'async'이어야합니까? –

+0

예, 그것을 고쳤습니다 :) – Ladislav

관련 문제