2012-07-10 1 views
0

iOS 앱에 환영 화면이 있습니다 (기본보기와 혼동하지 마세요). 뷰 컨트롤러는 NSXMLParser를 사용하여 XML 파일을 다운로드하고 파싱합니다. 작업이 완료되면 버튼이 보이게됩니다.이 버튼을 클릭하면 사용자를 실제 앱으로 가져가는 "presentViewController"가 호출됩니다. 이것은 잘 동작했다.presentViewController에 필요한 컨텍스트가 있습니까?

그런 다음 앱이 자동으로 전환되기를 바랬으므로 버튼을 모두 제거하고 presentViewController에 대한 호출을 "parserDidEndDocument"대리자 메서드로 옮겼습니다. 메서드가 호출되지만 아무 일도 일어나지 않습니다. 나는 그것이 콘텍스트와 관련이 있다고 의심하지만, "self"를 로깅하면 환영 뷰 컨트롤러의 인스턴스를 프린트한다. 내가 도대체 ​​뭘 잘못하고있는 겁니까? 이 문제를 어떻게 해결해야합니까?

답변

4

기본 스레드로 디스패치 해보세요. NSXmlParser와 같은 비동기 개체는 별도의 스레드에서 작동하지만 UIKit 업데이트는 주 스레드에서 수행해야합니다.

dispatch_async(dispatch_get_main_queue(), ^{ 
    [self presentViewController]; //Or whatever 
}); 
+0

이렇게했습니다. 감사. 그러나 이제는 "WelcomeViewController : 0x16e010>에 대한 모양 전환 시작/종료의 불균형 호출"이라는 경고 메시지가 나타납니다. – Groppe

+0

여러 번 호출하지 않는지 확인하십시오. 또한 SO에 대한이 문제에 대한 답이 많습니다. – borrrden