таблица не обновляется после того, как я нажму назад и выберу другую опцию.всегда та же таблица, что и при первом выборе - PullRequest
0 голосов
/ 19 июня 2011

У меня есть список Patient объектов на моей главной странице, который является табличным представлением. Когда я нажимаю на одну из строк, она переходит на другую страницу, на которой отображаются две опции, относящиеся к этому конкретному пациенту, вариант 1 - «Информация о пациенте», а вариант 2 - список всех дат приема определенного пациента.

У меня есть некоторые проблемы со вторым вариантом - кажется, что таблица дат приема не обновляется, когда я возвращаюсь на главную страницу и выбираю другого пациента. Таблица дат приема всегда показывает даты приема первого пациента, которого я выбрал. Я действительно не знаю, где ошибка.

Я использовал метод viewWillAppear, потому что viewDidLoad, кажется, вызывается только один раз; Я доказал, что используя NSLog(_nric); - он печатается только один раз. Я подозреваю, что это метод табличного представления, который дает мне проблему. Может кто-нибудь дать мне несколько советов о моем втором методе ниже?

- (void)viewWillAppear:(BOOL)animated {
    _listOfPatientsAdmInfoOptions = [[NSMutableArray alloc] init];



    for(PatientAdmInfo *patientAdmInfo1 in [[PatientDatabase database] patientAdminList:_nric]){

        [ _listOfPatientsAdmInfoOptions addObject:patientAdmInfo1];
        NSLog(_nric); 

    }
}


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }

    // Configure the cell...

    _patientAdmInfo = [[PatientAdmInfo alloc] init ];


    _patientAdmInfo = [_listOfPatientsAdmInfoOptions objectAtIndex:indexPath.row];

    cell.textLabel.text = _patientAdmInfo.pDiagnosis;
    //cell.detailTextLabel.text = patientAdmInfo.pDiagnosis, patientAdmInfo.sDiagnosis;


    return cell;
}

Ответы [ 2 ]

3 голосов
/ 19 июня 2011

Вызовите reloadData метод на вашем столе Экземпляр после обновления вашего массива в - (void)viewWillAppear:.

[myTabelView reloadData];

А также не забудьте вызвать [super viewWillAppear:animated]; в viewWillAppear метод.

Таким образом, ваш метод viewWillAppear должен быть ..

-

(void)viewWillAppear:(BOOL)animated {

     [super viewWillAppear:animated];
    _listOfPatientsAdmInfoOptions = [[NSMutableArray alloc] init];



    for(PatientAdmInfo *patientAdmInfo1 in [[PatientDatabase database] patientAdminList:_nric]){

        [ _listOfPatientsAdmInfoOptions addObject:patientAdmInfo1];
        NSLog(_nric); 

    }
   [myTabelView reloadData];
}
0 голосов
/ 19 июня 2011

Это потому, что ваш _patientAdmInfo объект является переменной экземпляра.Каждая ячейка в вашей таблице просматривает один и тот же объект, чтобы получить свои данные.Ваш cellForRowAtIndexPath: метод должен выглядеть следующим образом:

PatientAdminInfo *tempPatient = [_listOfPatientsAdmInfoOptions objectAtIndex:indexPath.row];
cell.textLabel.text = tempPatient.pDiagnosis;

, это гарантирует, что каждая ячейка смотрит на соответствующий объект PatientAdminInfo.

...