UITableViewCell отображается неправильно в первый раз - PullRequest
1 голос
/ 16 июня 2011

Я переключаюсь между различными фонами ячейки (белый и светло-серый) и свойствами шрифта (полужирный и обычный) после создания или повторного использования ячейки с помощью следующего кода:

- (UITableViewCell *)tableView:(UITableView *)tableView 
    cellForRowAtIndexPath:(NSIndexPath *)indexPath  {
...

 UIView* cellBackgroundView = [[[UIView alloc] initWithFrame:CGRectZero] autorelease];
 UIFont *font;
 if ([[userModel suspended] boolValue]) {
   [cellBackgroundView setBackgroundColor:[UIColor lightGrayColor]];
   font = [UIFont italicSystemFontOfSize:[[[cell textLabel] font] pointSize]];

 } else {
   [cellBackgroundView setBackgroundColor:[UIColor whiteColor]];
   font = [UIFont boldSystemFontOfSize:[[[cell textLabel] font] pointSize]];
 }
 [cell setBackgroundView:cellBackgroundView];  
 [[cell textLabel] setFont:font];

 [[cell textLabel] setBackgroundColor:[UIColor clearColor]];
 [[cell detailTextLabel] setBackgroundColor:[UIColor clearColor]];
 [[cell textLabel] setText:[NSString stringWithFormat:@"%@, %@", 
                            [userModel familyName], [userModel givenName]]];
 [[cell detailTextLabel] setText:[userModel userName]];

return cell;
}

Проблема заключается в том, что если ячейказначение должно быть lightgray и курсив в первом наборе ячеек, отображаемых после загрузки, его фон отображается lightgray (правильно), но его шрифт нормальный (неверно).

Если я прокручиваю вниз и снова отображаю ячейку, она отображается как положено.

Спасибо, Хорхе

Ответы [ 2 ]

1 голос
/ 16 июня 2011

В строке

font = [UIFont italicSystemFontOfSize:[[[cell textLabel] font] pointSize]]

вы предполагаете, что ячейка textLabel уже существует и имеет правильный шрифт. Я бы NSLog шрифт прямо перед этим вызовом. Также почему бы просто не указать здесь размер шрифта: font = [UIFont italicSystemFontOfSize: 12.0]

0 голосов
/ 16 июня 2011

Есть ли вероятность того, что логическое значение, возвращаемое [[userModel приостанавливается] boolValue], будет ложным во время создания первой группы ячеек?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...