Подтвердить что ты не робот

Шрифт UITableViewCell не изменяется

Я пытаюсь настроить шрифт UITableViewCell, используя следующий код для заполнения таблицы.

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

    static NSString *MyIdentifier = @"MyIdentifier";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier];
    if (cell == nil) 
    {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:MyIdentifier];
    }

    // Set up the cell  
    int storyIndex = [indexPath indexAtPosition: [indexPath length] - 1];   
    NSString *temp = [[NSString alloc] initWithString:[[stories objectAtIndex: storyIndex] objectForKey: @"title"]];
    cell.textLabel.text = temp;
    [[cell textLabel] setTextColor:[UIColor colorWithRed:154.0/255.0 green:14.0/255.0 blue:2.0/255.0 alpha:1]];
    [[cell textLabel] setFont:[UIFont systemFontOfSize:12.0]];  

    return cell;
}

В жизни я не знаю, почему это не изменит шрифт! Также приведенный выше код работает отлично, если я жестко кодирую в том, что текст ячейки такой, как cell.textLabel.text = @"TEST";

Любые предложения? Спасибо!

4b9b3361

Ответ 1

Во-первых, вы должны авторизовать свою ячейку. В настоящее время вы теряете память как сумасшедший.

Во-вторых, вы должны обновить шрифт в tableView:willDisplayCellForRow:atIndexPath:. Если вы используете стандартное представление таблицы, оно будет вносить изменения в ваши ячейки (в случайное время), и вам нужно будет делать такие вещи, как изменения шрифта, цвет фона и т.д. В tableView:willDisplayCellForRow:atIndexPath:, а не в методе источника данных.

Смотрите также эту тему: Что такое - [UITableViewDelegate willDisplayCell: forRowAtIndexPath:] для?

Ответ 2

@Джейсон Коко:

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
}

Ответ 3

Просто вы можете попробовать следующий код.


-(UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    static NSString *cellString = @"cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellString];
    if(cell == nil){
        cell = [[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:cellString];
    }
    cell.textLabel.text = values;
    cell.textLabel.textColor = [UIColor colorWithRed:154.0/255.0 green:14.0/255.0 blue:2.0/255.0 alpha:1];
    cell.textLabel.font = [UIFont systemFontOfSize:12.0];
    return cell;
}

Ответ 4

Попробуйте,

cell.textLabel.font = [UIFont systemFontOfSize:12.0];
cell.detailTextLabel.font = [UIFont systemFontOfSize:10.0];

Ответ 5

willDisplayCell: forRowAtIndexPath: может использоваться для изменения цвета фона ячейки, содержимого и т.д., за исключением свойства backgroundColor для textlabel и detailtextlabel

Своя всегда хорошая практика, чтобы сделать эти изменения в вышеуказанном методе

Ответ 6

очень просто, `

- (void)configureCell:(UITableViewCell *)cell atIndexPath:(NSIndexPath *)indexPath
{

   cell.textLabel.textColor = [UIColor grayColor]; //redColor greenColor etc.
}