2013-01-03 3 views
0

내 응용 프로그램에서 문서를 다운로드하려면 ASIHttpRequest를 사용하고 있습니다. 다운로드 한 각 문서에 대해 progessbar를 표시하고 있습니다. 문서가 UITableView에 표시되므로 문서 셀마다 별도의 진행 표시 줄이 있습니다. 사용자가 '뒤로'를 클릭 한 후 다시 문서 테이블에 제공 table.When 다음과 같이되어 나는 진행 상황을 표시 할 bar.But이 문서를 다운로드 displayed.The 코드가 아닙니다 :진도 표시 줄의 상태를 유지

- (void)startDownloadingDocumentUsingIndexPath:(NSIndexPath*)indexPath 
{ 
    Document *document = [self.objects objectAtIndex:indexPath.row]; 
    self.ip=indexPath; 
    if(isNetworkAvailable) 
    { 
     NSString *str = [NSString stringWithFormat:kBody_convertDocToByte, 
         document.docCatId, 
         document.docCatName, 
         document.docChksum, 
         document.docLocation, 
         document.docName, 
         document.docSize, 
         document.docType, 
         document.docUpdated, 
         document.docUpdatedBy, 
         document.documentId 
         ]; 
     NSMutableData *data = [NSMutableData dataWithData:[str dataUsingEncoding:NSUTF8StringEncoding]]; 
     self.req = [ASIHTTPRequest requestWithURL:[NSURL URLWithString:kURL]]; 

     self.req.shouldAttemptPersistentConnection = NO; 
     [self.req setDownloadProgressDelegate:_progress]; 

     self.req.delegate=APP_DEL; 
     self.req.timeOutSeconds=timeOut; 
     [self.req setDidFinishSelector:@selector(didFinishDownloadDocument:)]; 
     [self.req setDidFailSelector:@selector(didFailDownloadDocument:)]; 
     [self.req addRequestHeader:@"SOAPAction" value:kAction_convertDocToByte]; 
     [self.req addRequestHeader:@"Content-Type" value:@"text/xml; charset=utf-8"]; 
     [self.req setPostBody:data]; 
     [self.req setRequestMethod:@"POST"]; 
     [self.req setContentLength:[data length]]; 

     self.req.userInfo=[NSDictionary dictionaryWithObjectsAndKeys:document,@"data",self.objCategory.categoryName,@"catname",self,@"vctr", nil]; 
     [[APP_DEL nq] addOperation:self.req]; 
     [[APP_DEL nq] go]; 
     [APP_DEL nq].showAccurateProgress = YES; 
    } 
    else { 
     UIAlertView *av=[[UIAlertView alloc] initWithTitle:@"Message" message:@"Please connect to internet & try downloading/updating document later." delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil]; 
     [av show]; 
    } 
} 

진행 막대의 상태가 유지되도록 코드에서 어떤 변경을해야합니까?

는 편집 : - 표는 실제로 사용자가 '부모'테이블의 '부모'책상에서 코드의 행을 선택 할 때 '아이'table.It가 표시된다 문서는 다음과 같습니다

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    self.nxt_obj_STMaster2ViewController=[[STMaster2ViewController alloc] initWithNibName:@"STMaster2ViewController" bundle:nil]; 
    self.nxt_obj_STMaster2ViewController.objCategory=[self.objects objectAtIndex:indexPath.row]; 
    self.nxt_obj_STMaster2ViewController.managedObjectContext=self.managedObjectContext; 
    self.nxt_obj_STMaster2ViewController.detailViewController=self.detailViewController; 
    self.nxt_obj_STMaster2ViewController.pre_STMasterViewController=self; 

    [tableView deselectRowAtIndexPath:indexPath animated:NO]; 

    [self.navigationController pushViewController:self.nxt_obj_STMaster2ViewController animated:YES]; 
} 
'아이'문서보기 컨트롤러

있는 viewDidLoad는 다음과 같습니다

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    UIBarButtonItem *item = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh target:self action:@selector(button_refreshTapped:)]; 

    self.navigationItem.rightBarButtonItem=item; 

    UIImageView *tempImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"left-background.jpg"]]; 
    [tempImageView setFrame:self.tableView.frame]; 
    [self.tableView setBackgroundColor:[UIColor clearColor]]; 
    self.tableView.backgroundView = tempImageView; 

    [self startLoadingData:self.detailViewController.liveData]; 
} 
+0

문서 테이블에있는 뷰 컨트롤러를 표시하기 위해 사용하는 코드를 보여주십시오 당신은 아마에 대한 참조를 유지해야합니다. 뷰 컨트롤러. – lnafziger

+0

@Inafziger : - 더 많은 코드로 질문을 편집했습니다. – user1550951

답변

1

그래서, 무슨 일을하는 새로운 반짝 뷰 컨트롤러에게 당신이 tableView:didSelectRowAtIndexPath:를 호출 할 때마다 만드는 것입니다. 대신, 한 번만 만들어야하고 필요할 때 다시 표시해야합니다. 나는 당신의 모든 논리를 잘 모르겠다. 그래서 행을 바꿀 때 새로운 것을 만들 필요가 있을지도 모른다. (어떤 경우에 당신이 당신의 View Controller와 같은지보기 위해서 당신의 .objCategory을 비교해야한다. . 추진하는 것은)

이로 변경합니다 :

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    if (!self.nxt_obj_STMaster2ViewController) 
    { 
     self.nxt_obj_STMaster2ViewController=[[STMaster2ViewController alloc] initWithNibName:@"STMaster2ViewController" bundle:nil]; 
     self.nxt_obj_STMaster2ViewController.managedObjectContext=self.managedObjectContext; 
     self.nxt_obj_STMaster2ViewController.detailViewController=self.detailViewController; 
     self.nxt_obj_STMaster2ViewController.pre_STMasterViewController=self; 
    } 

    self.nxt_obj_STMaster2ViewController.objCategory=[self.objects objectAtIndex:indexPath.row]; 

    [tableView deselectRowAtIndexPath:indexPath animated:NO]; 

    [self.navigationController pushViewController:self.nxt_obj_STMaster2ViewController animated:YES]; 
} 
+0

감사합니다! 이것은 문제를 해결했습니다! – user1550951

관련 문제