저는 웹 서비스 데이터 처리 응용 프로그램을 만들고 있으며 가능한 한 빨리 응용 프로그램을 실행하려고합니다. 특정 3 손가락 제스처가 수행 될 때, 업데이트 된 정보를 서버로 보내어 새로운 이미지 배치를 가져 와서 기존의 업데이트를 업데이트하는 메소드를 호출합니다.GUI 작업이 실제로 수행되는 방법은 언제입니까?
그래서 배열에 15 개의 이미지가 있다고 말하면 2 개의 손가락 제스처로 필터링 할 수 있습니다. 그런 다음 3 개의 손가락 제스처를 할 수 있고 동일한 설정을 얻을 수 있습니다. 뒤로, 그냥 약간 조정했다 (대비/밝기 등).
내가 원했던 것은 첫 번째 이미지가 검색된 후 이미지를 표시하는 imageView를 업데이트 할 수 있기 때문에 시리즈의 나머지 부분이 어떻게 보이는지에 대한 느낌을 사용자에게 제공 할 수 있습니다. . 그러나 무엇을 시도해도, 그리고 내가 시도하고 구현하는 스레드가 얼마나 많은지간에 전체 다운로드가 완료되기 전에 imageView를 업데이트 할 수 없습니다. 일괄 다운로드가 완료되면 (별도의 스레드에서 처리됨) imageView가 새로운 이미지로 업데이트되고 모든 것이 훌륭합니다.
-(void)preDownload:(int)window Level:(int)level ForPane:(int) pane{
int guidIndex = [[globalGuids objectAtIndex:pane] intValue];
UIImage *img = [DATA_CONNECTION getImageWithSeriesGUID:[guids objectAtIndex:guidIndex] ImageID:counter Window:window Level:level];
if(pane==0){
NSLog(@"0");
[imageView3 setImage:img];
}else if(pane==1){
NSLog(@"1");
[imageView31 setImage:img];
}else if(pane==2){
NSLog(@"2");
[imageView32 setImage:img];
}else if(pane==3){
NSLog(@"3");
[imageView33 setImage:img];
}
}
따라서 (더 스레드 거기에서 실행되고 있지 두 가지 방법으로 이것을 분리함으로써 :
if(UIGestureRecognizerStateEnded == [recognize state]){
[self preDownload:windowCounter Level:levelCounter ForPane:tagNumber];// Where this method is what gets the first image, and tries to set it to the imageView
[self downloadAllImagesWithWL:windowCounter Level:levelCounter ForPane:tagNumber]; //And this method goes and gets all the rest of the images
}
이 내 preDownload 방법이다
과정의 첫 번째 단계는 이쪽 이 시점에서 이러한 메서드는 모두 호출되기 전에) preDownload 메서드가 완료된 후 imageView가 업데이트되고 컨트롤이 downloadAllImagesWithWL 메서드에 계속 적용될 것이라고 생각했지만 그럴 수는 없습니다. .
나는 여기에 간단한 것을 놓치고 있습니까? 두 번째 방법을 실행하기 전에 GUI 요소를 업데이트하려면 어떻게해야합니까?