2014-12-15 7 views
1

저는 iOS에서 새로운입니다. uitableview에서 하나씩 업로드 데이터를 구현하려고합니다. 그 배경 작업을 사용하고 있습니다.백그라운드 작업을 처리하는 방법?

다음 코드를 사용하십시오.

-(void)MethodUploadBgTaskAssign 
{ 
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 
      NSString *responseString = [self MethodlblUploadClicked]; 
      dispatch_async(dispatch_get_main_queue(), ^(void) 
          { 
           if([responseString isEqualToString:@"UploadSuccess"]) 
           { 
            [self ReloadTblData]; 
            [self ContinueUploadData]; 
           } 
          }); 
     }); 
} 

-(void) ReloadTblData 
{ 
    if([dataArr count]>0) 
    [dataArr removeObjectAtIndex:0]; 

    [uitblData reloadData]; 
    } 

-(void) ContinueUploadData 
{ 
    if((dataArr count]>0) 
    [self MethodUploadBgTaskAssign]; 
} 

내 문제는 빈 데이터와 시간 테이블 다시로드 후 테이블에 데이터를 업로드한다 모든 데이터가 그 시간에 업로드하기 때문이다.

테이블의 각 셀을 업로드 한 후 업데이트 된 UI를 표시하고 싶습니다.

코드에 필요한 변경 사항은 무엇입니까? 도움에 감사드립니다.

+0

지연로드를 구현하려고합니까? –

+0

아니요 첫 번째 셀에서 데이터를 업로드 한 후 각 셀에 데이터를 업로드하려고하면 해당 셀을 삭제하고 업데이트 된 UI를 표시 한 다음 첫 번째 행 데이터를 업로드하면 모든 행 데이터가 완료 될 때까지 계속됩니다. –

+0

이 방법을 셀 또는 컨트롤러에 구현 했습니까? –

답변

0

마치 테이블을 업데이트하는 것처럼 보이지만 잘못된 스레드 (따라서 테이블은 실제로 업데이트되지 않는 것으로 보입니다)에서 보입니다. performSelectorOnMainThread를 사용하여 UI를 업데이트해야합니다.

[self performSelectorOnMainThread:@selector(ReloadTblData:) // Update the table on the main thread 
         withObject:nil 
        waitUntilDone:NO]; 

나는 이것이 작동해야한다고 생각한다.

관련 문제