Значение textLabel TableViewCell возвращается к 1, когда ячейка прокручивается из представления - PullRequest
0 голосов
/ 11 января 2012

у меня есть табличное представление, в котором я могу добавить 1 или вычесть 1 к значению моего cell.textLabel.text, но когда я переключаю представления и возвращаю или прокручиваю ячейку вне представления, и когда она возвращается в представление,Значение textLabel возвращается к 1, который является исходной отправной точкой!Пожалуйста помоги!Вот код для сложения и вычитания 1:

 - (IBAction)addLabelText:(id)sender{

    cell = (UITableViewCell*)[sender superview]; // <-- ADD THIS LINE

        cell.textLabel.text = [NSString stringWithFormat:@"%d",[cell.textLabel.text  
                                                                intValue] +1];

}


- (IBAction)subtractLabelText:(id)sender
{
   cell = (UITableViewCell *)[sender superview];        
    if ( [[cell.textLabel text] intValue] == 0){ 
        cell.textLabel.text = [NSString stringWithFormat:@"%d",[cell.textLabel.text intValue] +0];
    }
    else{
        cell.textLabel.text = [NSString stringWithFormat:@"%d",[cell.textLabel.text intValue] -1];
    }
}

Ответы [ 4 ]

2 голосов
/ 11 января 2012

Это происходит потому, что ячейки будут повторно использоваться при прокрутке.Будет вызван метод источника данных табличного представления, поэтому значения возвращаются к исходному значению.Вы можете поддерживать массив NSNumber s в качестве источника данных для табличного представления (в cellForRowAtIndexpath: установите текст для метки ячейки из массива).Каждый раз, когда вам нужно сложить или вычесть, сделайте это NSNumber obj и перезагрузите просмотр таблицы.

1 голос
/ 11 января 2012

Похоже, вы каждый раз выделяете новую ячейку ... и не используете метод повторного использования ячейки.В вашем случае, когда вы выполняете арифметические действия с вашими предыдущими значениями и у вас нет массива для хранения предыдущих значений.Самый простой способ исправить это - сделать ваш Cell-Identifier уникальным..уникальный.

1 голос
/ 11 января 2012

Вы не обновляете ваши модальные данные. Вот почему он принимает первоначальное значение контента.

0 голосов
/ 11 января 2012

После изменения значения в тексте ячейки перезагрузите просмотр таблицы [self.tableview reloadData]

...