Переключение видимости uiprogressview в каждом ряду uitableview переключает несколько одновременно - PullRequest
1 голос
/ 23 марта 2011

В основном у меня есть uitableview с каждой ячейкой, содержащей uiprogressview и uiswitch. переключение переключателя переключает видимость прогресса просмотра.

но.

если я переключаю переключатель в строке: 0. Прогресс в строке: 0 И строка: 11 показывает.

мой переключатель имеет это: [(UISwitch *) cell.accessoryView addTarget: self action: @selector (PrefetchStudy :) forControlEvents: UIControlEventValueChanged];

и вот действие:

-(void)PrefetchStudy:(id)sender
{
UISwitch *tmpSwitch = (UISwitch*)sender;

NSIndexPath *indexPath = [NSIndexPath indexPathForRow:tmpSwitch.tag inSection:0];
CustomCell *cell = (CustomCell *)[self.tableview cellForRowAtIndexPath:indexPath];
NSString *tmp =  cell.patient_name.text;
NSLog(@"This is the patient name of the selected row: %@", tmp);
if(tmpSwitch.on)
{
    cell.progressBar.hidden = NO;

}
else
{
    cell.progressBar.hidden = YES;
}


}

какие-либо предложения относительно того, почему это происходит?

Ответы [ 2 ]

0 голосов
/ 21 сентября 2012

Поскольку UITableView повторно использует uitableviewcell для повышения производительности, вы не можете рассчитывать на то, что каждая ячейка уникальна. (в этом случае строка 11 повторно использует ячейку строки 1), вы должны сбросить состояние ячейки в:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
0 голосов
/ 23 марта 2011

Вы установили несколько точек останова в своем коде?Если это так, вызывается ли этот метод дважды (один раз для строки 0 и один раз для строки 11) или метод cellForRowAtIndexPath неправильно обновляет строку 11 с видимостью строки 0?

...