KLevSki,
Это потому, что вы повторно используете ячейки таблицы через dequeueReusableCellWithIdentifier
, что хорошо на платформе iPhone. Что происходит, это:
1) Ячейка создается в секции if (cell==nil)
2) Как только количество ячеек создано (в вашем случае 9 из них, примерно на основе того, сколько их показано на экране), ОС начинает использовать ячейки таблицы, чтобы стать хорошим менеджером памяти вместо создания уникальная ячейка таблицы для каждой строки, которая может занимать много памяти
3) Поскольку ячейка используется повторно, все, что вам нужно сделать в разделе после блока if (cell==nil)
, это обновить / изменить информацию о каждой ячейке.
В качестве примера ... Если вы создали ячейку, в которой были только значок и метка, каждый раз, когда ячейка прокручивается в поле зрения, вы обновляете значок и метку в соответствии с тем изображением или строкой, которые подходят для этого. клетка.
Для вашего случая:
...
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier] autorelease];
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
}
// update cell
cell.textLabel.text = [[views objectAtIndex:indexPath.row] objectForKey:@"racer"];
cell.textLabel.font = [UIFont boldSystemFontOfSize:15];
cell.detailTextLabel.text = [[views objectAtIndex:indexPath.row] objectForKey:@"pointsScored"];
return cell;