UITableViewCell字体不变

时间:2009-12-13 02:57:38

标签: iphone uitableview

我正在尝试使用以下代码自定义UITableViewCell的字体,以便填充tableview。

- (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";

,上面的代码也能正常工作

有什么建议吗?谢谢!

6 个答案:

答案 0 :(得分:29)

首先,你应该自动释放你的细胞。你现在正在疯狂地泄露记忆。

其次,您应该更新tableView:willDisplayCellForRow:atIndexPath:中的字体。如果您使用标准表格视图,它将对您的单元格进行更改(随机时间),您需要在tableView:willDisplayCellForRow:atIndexPath:而不是数据源方法中执行字体更改,背景颜色等操作

另见此主题:What is -[UITableViewDelegate willDisplayCell:forRowAtIndexPath:] for?

答案 1 :(得分:8)

@Jason Coco:

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

答案 2 :(得分:4)

您可以尝试使用以下代码。


-(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;
}

答案 3 :(得分:3)

尝试,

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

答案 4 :(得分:1)

willDisplayCell:forRowAtIndexPath:可用于修改单元格的背景颜色,内容视图等,但textlabel和detailtextlabel的backgroundColor属性除外

在上述方法中进行这些修改总是一个好习惯

答案 5 :(得分:-2)

很简单,`

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

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