UILabel 不在原型单元格中呈现

Posted

技术标签:

【中文标题】UILabel 不在原型单元格中呈现【英文标题】:UILabel does not render in prototype cell 【发布时间】:2014-10-31 16:51:12 【问题描述】:

我有一个包含 UITableView 的 UIViewController。在我的表格视图中,我有一个原型单元格,我想在其中放置自定义标签。我无法让任何自定义标签在单元格中呈现。数据源和 tableview 委托已连接并正常运行。对于我的第一次尝试,我将一个 UILabel 控件拖到我的原型单元格上。我将它的标签设置为 1000。这是我填充单元格的代码:

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

    UILabel *customLbl = (UILabel*)[cell viewWithTag:1000];
    if(indexPath.section == 0)
        [cell.textLabel setText:[rData.currentHeightReadings objectForKey:[heightKeys objectAtIndex:indexPath.row]]];
        [customLbl setText:@"CFS"];
     else 
        [cell.textLabel setText:[rData.currentFlowReadings objectForKey:[flowKeys objectAtIndex:indexPath.row]]];
        [customLbl setText:@"Ft."];
    

    return cell;

每个单元格的默认 textLabel 会按应有的方式呈现。但是,不会出现自定义标签。我通过更改单元格内容视图的背景颜色验证了原型单元格实际上正在呈现。在我的故事板中,我设置了原型单元的重用标识符以匹配我的代码。样式设置为“自定义”。我还应该做什么?谢谢!

【问题讨论】:

尝试 [customLbl setNeedsDisplay] 您的customLb 是否真正获得了对该元素的正确引用,还是nil 标签显示一个有效的实例并设置为正确的文本。它只是不会显示在单元格上。 临时更改原型中UILabel的背景颜色,我们看看标签是否真的在屏幕上并且没有被其他标签之一隐藏 您使用的是自动布局还是尺寸类? 【参考方案1】:

验证您的自动布局约束是否正确,以便 UILabel 真正定位在您期望的位置。

【讨论】:

【参考方案2】:

我曾经遇到过同样的问题,我通过不对cell.textLabel 属性调用任何方法来解决它。只是不要以任何方式设置其文本。

试一试并报告。

【讨论】:

【参考方案3】:

试试这个:

UILabel *customLbl = (UILabel*)[cell.contentView viewWithTag:1000];

【讨论】:

以上是关于UILabel 不在原型单元格中呈现的主要内容,如果未能解决你的问题,请参考以下文章

UICollectionView - 在其他单元格中重复的子视图实例

UITableViewCell:获取单元格中 UILabel 的确切宽度

UIViewRepresentable 在 SwiftUI 中的列表单元格中的位置

自定义单元格中的 UILabel 不会动态增加高度

从表格视图单元格中删除 UIlabel 文本

根据表格视图单元格中的内容更改 uilabel 高度