【问题标题】:Strange issue with UITableViewCell: UILabel turns into something else?UITableViewCell 的奇怪问题:UILabel 变成了别的东西?
【发布时间】:2010-05-13 04:35:11
【问题描述】:

我在使用 iPhone SDK 3.1.2 时遇到了这个奇怪的问题。

我的 UITableViewCell 包含 3 个 UILabel,每个 UILabel 都分配了一个从 1 到 3 的数字标签。

http://img.skitch.com/20100109-gdg9f57999gne3psqmmb3y4nb1.png

问题在于第一个 UILabel(在上面的屏幕截图中突出显示):我无法将其文本设置为任何内容。甚至 NSLog 它的内容也给了我一个(null)

有趣的是,当我尝试打印 UILabel 的类名时,我得到了 UITableViewCell。

http://img.skitch.com/20100110-7jfgipbiskbc9xm68pt3mqfqi.png

将此特定 UILabel 的标签更改为其他数字(例如 4)使其正常工作。多么奇怪。

有人有想法吗?

【问题讨论】:

  • 您是否在 Interface Builder 中单击了 UITableViewCell 元素来检查它正在使用的 tag 值?
  • 哦,它设置为 1。但是将其更改为 0 并不能解决问题。
  • 由于 UITableViewCell 自动有一些辅助视图和东西的子视图,那么其中一个可能已经在使用相同的标签或其他东西?
  • @Nimrod:完全正确。使用[cell.contentView viewWithTag:1]

标签: iphone uitableview


【解决方案1】:

您必须检查cell.contentView 而不是视图本身。 :)

【讨论】:

    【解决方案2】:

    由于您是在 Interface Builder 中创建单元格,所以无论如何我都不会使用标签。我只是将 UITableViewCell 子类化为 MyCell 或其他东西,将表格单元格的类更改为 MyCell,然后在 MyCell 中声明一些可以将子视图连接到的 IBOutlets。这也允许您为单元格定义一些方便的方法/属性。

    然后你可以忘记标签,只做 myCellInstance.nameLabel.text = @"Joebob Briggs" 或其他什么。

    【讨论】:

    • 不需要子类化。 @gcamp 是正确的,你可以在cell.contentView 中找到标签。
    • 好吧,它可能不需要,但对我来说,标签更像是最后的手段,因为您现在必须手动保持一些常量同步。如果您使用标签编号的东西,至少在某处添加一些诸如“#define kNameLabelTag 1”之类的东西以帮助保持同步。不幸的是,IB 不会让你为标签输入定义,但会自动保持 IBOutlets 同步。
    猜你喜欢
    • 2017-12-08
    • 1970-01-01
    • 2017-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-17
    • 2011-07-11
    • 1970-01-01
    相关资源
    最近更新 更多