UITableViewCell自定义字体仅在表更新后显示

时间:2013-02-19 20:22:07

标签: ios objective-c uitableview

我没有做任何复杂的事情。只是尝试在表格单元格上设置字体。如果在视图控制器出现后重新加载表数据或者滚动表并且单元格自行更新,则字体显示正常。但是如果我在第一次加载时设置tableview属性,它就无法正常显示。

以下是代码:

-(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    NSString *cellIdentifier = @"listItem";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];

    if (!cell) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
    }

    cell.textLabel.text = [pickerList objectAtIndex:indexPath.row];

    return cell;
}

-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath{
    cell.backgroundColor = [UIColor AMFDarkBlueColor];
    cell.selectionStyle = UITableViewCellSelectionStyleGray;
    cell.textLabel.textColor = [UIColor AMFRedColor];
    cell.textLabel.font = [UIFont fontWithName:@"MuseoSlab-500" size:cell.textLabel.font.pointSize];
}

就像我说的,如果我在reloadData中拨打viewDidAppear,它就有效。这似乎是一个不必要的步骤,所以我想确保我没有做错事。

谢谢

修改的 无论我在cellForRowAtIndexPath还是willDisplayCell

中设置字体,我都会得到同样的效果

3 个答案:

答案 0 :(得分:6)

尝试这样做

    cell.textLabel.font = [UIFont fontWithName:@"MuseoSlab-500" size:17.0];

答案 1 :(得分:1)

在细胞启动后立即将cell.textLabel.font = ...更改。

-(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    NSString *cellIdentifier = @"listItem";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];

    if (!cell) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];

        cell.textLabel.font = [UIFont fontWithName:@"MuseoSlab-500" size:cell.textLabel.font.pointSize];
    }
//Continue cell config
}

答案 2 :(得分:0)

这对我来说很好,试一试:

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

static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

if (cell == nil) {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier];
}

UIFont *myFont = [ UIFont fontWithName: @"Arial" size: 30.0 ];
cell.textLabel.font = myFont;   
[cell.textLabel setText:@"Text"];

return cell;
}