Это происходит из-за этой строки (которую вы должны иметь в любом случае):
UITableViewCell *cell = [tv dequeueReusableCellWithIdentifier:CellIdentifier];
В основном, потому что ячейки используются повторно, содержимое остается в ячейке, поэтому вам нужно очистить эту ячейку после того, какdequeu и затем установите новый contentView.
Что здесь происходит, в частности, это то, что, хотя вы сбрасываете текст secondLabel
, когда вы устанавливаете здесь свою переменную:
secondLabel = [[[UILabel alloc] initWithFrame:CGRectMake(160,0,160,42)] autorelease];
Последняя созданная ячейка - это то, на что указывает secondLabel, так что вы действительно всегда меняете одну и ту же метку, поэтому я бы предложил что-то вроде этого:
UILabel *lblCell;
for (id label in [cell.contentView subviews]) {
if ([label isKindOfClass:[UILabel class]]) {
lblCell = label;
}
}
lblCell.text = [[self.themes objectAtIndex:indexPath.row] valueForKey:@"THEMEPCT"];
Надеюсь, это поможет.