сохранить состояние индикатора выполнения

Я использую ASIHttpRequest для загрузки документов в своем приложении. Я показываю индикатор выполнения для каждого загруженного документа. Документы отображаются в UITableView, поэтому для каждой ячейки документа в таблице есть отдельный индикатор выполнения. Когда пользователь нажимает «Назад ' а потом снова приходит в таблицу документов,хочу отобразить индикатор выполнения.Но он не отображается.Код загрузки документа следующий:

- (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];
    }
}

Какие изменения нужно внести в код, чтобы состояние индикатора выполнения сохранилось?

EDIT:- Таблица документов на самом деле является «дочерней» таблицей. Она отображается, когда пользователь выбирает строку в «родительской» таблице. Код в «родительской» таблице:

- (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];
}

person user1550951    schedule 03.01.2013    source источник
comment
Пожалуйста, покажите код, который вы используете для отображения контроллера представления, в котором находится таблица документов. Вероятно, вам нужно сохранить ссылку на этот контроллер представления.   -  person lnafziger    schedule 03.01.2013
comment
@Inafziger: - отредактировал вопрос, добавив больше кода   -  person user1550951    schedule 03.01.2013


Ответы (1)


Итак, что вы делаете, так это создаете новый блестящий контроллер представления каждый раз, когда вы вызываете tableView:didSelectRowAtIndexPath:. Вместо этого вы должны создать его только один раз и повторно отобразить при необходимости. Однако я не уверен во всей вашей логике, поэтому вам может потребоваться создать новую при изменении строк (в этом случае вы также должны сравнить свой .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];
}
person lnafziger    schedule 03.01.2013