UITableViewCell 未在其中显示 UILabel

Posted

技术标签:

【中文标题】UITableViewCell 未在其中显示 UILabel【英文标题】:UITableViewCell not showing UILabel within 【发布时间】:2010-11-30 20:45:22 【问题描述】:

我有这段代码,它给出了下面截图的结果。它在 tableView:cellForRowAtIndexPath: 方法中。我不知道为什么条形上方的文字没有显示。有没有人有任何想法?谢谢。

cell.textLabel.text = @"";
    cell.accessoryType = UITableViewCellAccessoryNone;
    cell.textAlignment = UITextAlignmentLeft;
    cell.selectionStyle = UITableViewCellSelectionStyleNone;
    UILabel * label = [[UILabel alloc] initWithFrame: cell.textLabel.frame];
    label.backgroundColor = [UIColor clearColor];
    label.text = [NSString stringWithFormat:@"%.1f%% (%i)",([[options_votes objectAtIndex: [indexPath row]] intValue] * 100.0 / total_votes),[[options_votes objectAtIndex: [indexPath row]] intValue]];
    NSLog(@"%@",[NSString stringWithFormat:@"%.1f%% (%i)",([[options_votes objectAtIndex: [indexPath row]] intValue] * 100.0 / total_votes),[[options_votes objectAtIndex: [indexPath row]] intValue]]);
    label.textAlignment = UITextAlignmentRight;
    [cell.contentView addSubview:label];
    [label release];
    label = [[UILabel alloc] initWithFrame: cell.textLabel.frame];
    label.backgroundColor = [UIColor clearColor];
    label.text = [options objectAtIndex:[indexPath row]];
    NSLog(@"%@",[options objectAtIndex:[indexPath row]]);
    label.textAlignment = UITextAlignmentLeft;
    [cell.contentView addSubview:label];
    [label release];
    UIImageView * image_view = [[UIImageView alloc] initWithImage:nav_delegate->back_bar];
    image_view.frame = CGRectMake(10, 44, 280, 10);
    [cell.contentView addSubview:image_view];
    [image_view release];
    image_view = [[UIImageView alloc] initWithImage:nav_delegate->blue_bar];
    image_view.frame = CGRectMake(10, 44, 5 + [[options_votes objectAtIndex: [indexPath row]] intValue] * 275.0/total_votes, 10);
    [cell.contentView addSubview:image_view];
    [image_view release];

【问题讨论】:

【参考方案1】:

只是在黑暗中刺了一下,但是因为你做了cell.textLabel.text = @"";,它可能已经将 textLabel 的框架缩小到 0 的宽度。尝试根据你知道的框架创建标签正确的可见尺寸。

【讨论】:

好的,谢谢。它确实可以使用该框架在其他地方工作。我会尝试改变它【参考方案2】:

要显示您的 2 个标签,您可以使用以下代码:

cell.accessoryType = UITableViewCellAccessoryNone;
    cell.selectionStyle = UITableViewCellSelectionStyleNone;

    if (indexPath.row == 0) 
        UILabel *label1 = [[UILabel alloc] initWithFrame:CGRectMake(11, 10, 280, 25)];
        label1.backgroundColor = [UIColor clearColor];
        label1.text = @"Your Text Here";
        label1.textAlignment = UITextAlignmentRight;
        [cell.contentView addSubview:label1];
        [label1 release];
    
    if (indexPath.row == 1) 
        UILabel *label2 = [[UILabel alloc] initWithFrame:CGRectMake(11, 10, 280, 25)];
        label2.backgroundColor = [UIColor clearColor];
        label2.text = @"Your Text Here";
        label2.textAlignment = UITextAlignmentLeft;
        [cell.contentView addSubview:label2];
        [label2 release];
    
    if (indexPath.row == 2) 
        // Put your imageView code here.
    

注意:如果您使用的 tableViewCell 高于默认大小 44.0,您可以在标签的 initWithFrame 方法中更改 25 数字。 希望这可以帮助你:)

【讨论】:

谢谢,但正如您在图片上看到的那样,我希望每行有多个标签。此外,在您的代码中,我会使用 if...else 结构或 switch 语句。

以上是关于UITableViewCell 未在其中显示 UILabel的主要内容,如果未能解决你的问题,请参考以下文章

UITableViewCell 附件视图按钮未在 ipad 纵向模式下显示

右侧细节 UITableViewCell 未在 iPad 上显示整行

数据未在 UITableViewCell Swift 上显示

UIbutton 未在 UITableViewCell 中更新其标记值

图像未在表格单元格上完美显示

UITableviewCell 高度未在滚动时重置