【问题标题】:UITableViewCell, custom content invisibleUITableViewCell,自定义内容不可见
【发布时间】:2013-01-17 06:49:04
【问题描述】:

当我将自定义控件添加到 UITableViewCell(通过将 UILabel 拖到情节提要中的表格单元格上)时,内容在运行时是不可见的。当我点击表格行(以选择它)时,内容会出现,但是是白色的。

项目设置:(总结:用 UITableView 和几行代码创建超极简的故事板项目来创建内容):

新项目,单视图应用程序,Xcode 4.5.2,使用故事板。这将创建一个针对 iOS 6 的项目。

将表格视图控制器拖到情节提要上,这将创建一个视图、它包含的 UITableView 以及该表格内的默认 UITableViewCell。

将我的表格视图控制器设置为初始场景。

为 UITableViewCell 设置一个重用标识符字符串(在故事板编辑器中)。

创建一个新文件,UITableView 的子类,填写一些最少 库存数据,以获得几行以填充“第 XX 行”数据文本。

运行项目。数据按预期显示,几行数据显示“第 0 行”、“第 1 行”等。没有问题

现在,我将标签拖到故事板中的表格单元格上。我对属性没有任何改变。我留下标签文本只是用黑色字母说“标签”。

图片见:http://www.codexlumen.com/issue/storyboard.png

再次运行项目。

我的期望:我的表格行现在有“标签”出现在行中,以黑色文本显示。

我实际看到的:和以前完全一样。 “标签”文本根本不会出现。

现在,有趣的部分来了:

仍在运行,我点击表格行来选择它。现在该行以蓝色突出显示,并且“标签”以白色出现在我放置标签控件的位置。

图片见:http://www.codexlumen.com/issue/hilight.png

所以 UILabel 就在那里,它只是没有被绘制在非高亮行中......

不知道为什么。

其他一些cmets:

  • 我没有使用任何类型的自定义表格单元子类。
  • 我没有向项目中添加任何内容或采取任何上述未提及的步骤。
  • 我没有更改情节提要的 UITableView 或 UITableViewCell 对象的属性,只是设置了重用标识符字符串并将 UILabel 拖到单元格上
  • 我尝试在我的 4s 和模拟器上运行(模拟器设置为各种设备/操作系统配置)
  • 我尝试更改标签属性(黑色背景、绿色文本等)。没有效果。无论我设置什么属性,视觉行为都是相同的(虽然如果我放大文本,“标签”会更大)

这是 100% 的故事板。我没有在代码中创建 UI 对象。代码中唯一对 UI 的引用是填充表格单元格的代码,如下所示:

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

    cell.textLabel.text = [NSString stringWithFormat:@"Line %i", indexPath.row];

    return cell;
}

【问题讨论】:

    标签: ios uitableview invisible


    【解决方案1】:

    我看到了你的问题。您在使用自定义单元格时访问标准UITableViewCell(即cell.textLabel)的属性。只需杀死第 3 行即可查看差异。我建议您为所需的每个标签创建自己的商店,而不是使用标准的。

    【讨论】:

    • 嗯...我明白了。在创建自定义单元格时,我从不使用库存的东西,这就是为什么这在过去的项目中一直有效的原因......你是 100% 正确的:UITableViewCell 标签控件任何自定义内容之上。如果我将我的 UILabel 移动到单元格的边缘,我可以看到它从 UITableViewCell 提供的 cell.textLabel 后面窥视。 --> 这将教会我使用库存内容快速进行原型制作,然后尝试在不删除库存内容的情况下进行自定义!
    • 结束这个想法:如果您没有为 UITableViewCell 提供的 UILabel 设置任何文本,它们要么折叠为零大小,要么根本不会添加到视图中(不确定哪个)... 让自定义 UI 控件可见。如果你为它们设置文本,它们是不透明的,隐藏你的自定义控件。
    • UITableView 及其家族类是 iOS 中最神秘的东西,我们永远无法确定。
    • 是的。我最喜欢的是,除非它位于 UITableViewController 子类中,否则您不能使用静态表设置这一事实的纯粹乐趣。只要你愿意在你的场景中只有一个视图(UITableView),就只能使用 UITableViewController 的好处......爱你,苹果! :-)
    • 我要补充一点,您需要为从 tableviewcell 派生的自定义视图单元创建一个类,为故事板编辑器中创建的控件添加插座到该类
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-05
    • 2012-01-20
    • 2014-10-15
    • 1970-01-01
    • 2013-10-12
    • 2015-06-07
    相关资源
    最近更新 更多