У меня есть UITable, который имеет более 200+ ячеек. Таблица прекрасно работает с данными, поступающими из сети. Теперь мне нужно добавить способ изменить цвет фона ярлыка, чтобы он соответствовал данным (красный, если значение уменьшилось и было зеленым, если значение увеличилось). Кажется, что это хорошо работает, но через некоторое время цвета становятся статическими, даже если значения обновляются нормально. Ниже приведен пример моего кода, который находится в методе layoutSubviews:Цвет не изменяется в UITableViewCells
Update
Я обновил код, чтобы показать мой мой стол. Обратите внимание, что данные передаются в ячейку отлично. Это цвет ячейки, который отказывается менять через несколько минут, независимо от того, что это за значение.
- (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];
UILabel* label = [[UILabel alloc] initWithFrame:self.contentView.bounds];
label.tag = 1;
[cell.contentView addSubview:label];
[label release];
}
UILabel *label = (UILabel*)[cell viewForTag:1];
float value = [label.text floatValue];
float newValue = [dataSource objectAtIndex:indexPath.row];
// Get the current value of the cell and compare it with the new value
if(value < newVal)
{
label.backgroundColor = [UIColor greenColor];
}
else if(value > newVal)
{
label.backgroundColor = [UIColor redColor];
}
label.text = [NSString stringWithFormat:@"%d", newValue];
}
Почему этот код в layoutSubviews? Это не каждый раз будет называться. Он должен быть в cellForRowAtIndexPath. – jrturton
Прочитав ответ ниже, я переместил код в нужное место. Спасибо, что заметили. – Seb