인터넷에서 ZIP 파일을 다운로드 할 수 있습니다. 게시물 처리는 connectionDidFinishLoading에서 수행되며 UIView 요소가 업데이트되지 않는 것을 제외하고는 정상적으로 작동합니다. 예를 들어, statusUpdate.text = @ "Uncompressing file"을 설정했지만 connectionDidFinishLoading이 완료 될 때까지 변경 사항이 표시되지 않습니다. 같이,이 메소드가 종료 할 때까지 UIProgressView 및 UIActivityIndicatorView 객체는 갱신되지 않습니다.connectionDidFinishLoading - 강제로 UIView를 업데이트 하시겠습니까?
이 방법 내에서 UIView를 강제로 업데이트 할 수있는 방법이 있습니까? 나는 [self.view setNeedsDisplay]를 설정하려고했지만 작동하지 않았다. 그것은 주 스레드에서 실행중인 것으로 보입니다. 다른 모든 명령은 잘 작동합니다. 유일한 문제는 UI 업데이트입니다.
감사합니다.
업데이트 : 여기에 UIView를 업데이트하지 않는 코드입니다 :
-(void)viewWillAppear:(BOOL)animated {
timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(processUpdate:) userInfo:nil repeats:YES];
downloadComplete = NO;
statusText.text = @"";
}
-(void)processUpdate:(NSTimer *)theTimer {
if (! downloadComplete) {
return;
}
[timer invalidate];
statusText.text = @"Processing update file.";
progress.progress = 0.0;
totalFiles = [newFiles count];
for (id fileName in newFiles) {
count++;
progress.progress = (float)count/(float)totalFiles;
// ... process code goes here ...
}
}
다음 processUpdate의 끝에서, 나는이 downloadComplete = 설정 YES. 이것은 &을 오류없이 실행하며 processUpdate가 완료 될 때까지 UIVIEW의 업데이트를 제외하고 의도 한대로 작동합니다. 그런 다음 모든 내용이 한 번에 업데이트됩니다.
지금까지 도와 주셔서 감사합니다.
감사합니다. 설명 된대로 (복사 및 붙여 넣기)이 구현 된 있지만 while() 루프에서 중단되고 절대로 입력합니다. 나는 이것을 시뮬레이터에서 돌리고있다. 매달려있는 이유는 무엇입니까? – waltcrit
루프 조건이 잘못되었습니다 ('<0' 대신'> 0'이어야합니다). 나는 내 대답을 고쳤다. 어쩌면 그것은 당신의 코드에 문제가있는 것입니까? 그렇지 않으면 말할 충분한 정보가 없습니다. – benzado
이 작품, 고마워요! – waltcrit