【问题标题】:ios 7 customizing UITableViewCell's content viewios 7 自定义 UITableViewCell 的内容视图
【发布时间】:2013-10-12 09:00:35
【问题描述】:

ios7 中使用情节提要,内容视图在情节提要编辑器中的 Table View Cell 下显式查看(与以前的版本相反,它在界面中隐藏) .

问题是我不能再将单元格的自定义元素连接到我的自定义单元格的 ib 插座(UITableCellView 的子类)并且只能将它们连接到无法自定义的表格内容视图(UIView)(即其自定义类属性是灰色的)

这让我可以选择使用我觉得不方便且不太优雅的标签。

我还可以在 xib 中创建一个自定义视图,完成所有连接,然后手动将此自定义视图添加为表格的内容视图,但我正在寻找一种通过故事板编辑器实现此目的的方法。

有没有办法在 ios7 的故事板编辑器中将 UI 元素连接到自定义单元格的内容视图?

【问题讨论】:

    标签: uitableview storyboard ios7 xcode5


    【解决方案1】:

    好的,我发现了一个 Xcode 错误。

    如果您完成以下操作,这将重现该问题:
    - 在故事板中创建新的 UIViewController
    - 将 UITableView 拖到 VC
    - 更新 UITableview 以拥有 1 个(尽可能多的)动态原型单元
    问题:已添加单元格,但没有 contentView。

    解决方案: 而不是更新情节提要中的单元格数量。 从 Xcode 的 objects 部分拖动一个自定义单元格,该单元格将添加一个 contentView。

    【讨论】:

    • 嗨 StuartM,我在表格视图中添加自定义单元格没有问题。我的问题是无法自定义自定义单元格的 contentView,因此我无法将 UI 元素连接到自定义单元格以在获取单元格时自然使用
    • 阅读我的评论,如果我没有正确理解您的答案,请告诉我。
    • 是的,我认为您看不到 contentView,因此将 UI 元素添加到自定义单元格。
    • 我今天遇到了这个问题。感谢您修复 StuartM。你提交雷达了吗?
    • 是的,先生,(重复 14866276(打开))。也可以随意提交一个,并注意它是该号码的副本。报告越多,解决问题的速度就越快。也可以随意投票以提高知名度
    【解决方案2】:

    我可以通过以下方式做到这一点:

    1. 选择文档大纲中的单元格
    2. 在 Identity Inspector 中更改其自定义类
    3. 将您想要的任何元素放入内容视图中
    4. 使用 Connections Inspector 将 IBOutlets 连接到内容视图中的元素

    【讨论】:

    • 你是如何建立联系的? IBOutlets 在哪里声明?请注意,视图控制器不是动态单元格的解决方案,因为每个单元格在创建时都会被复制
    • 我有一个 UITableViewCell 的自定义子类,并在该对象上声明了插座。
    • 是的,我也是。你能改变内容视图的自定义类吗?
    • 然后奥斯卡去了....显然连接它们的方法是在你的答案中执行第 4 步,这似乎很奇怪,因为这也应该通过 ctrl+拖动元素到自定义细胞类。无论如何,这可以完成工作。谢谢!
    • 我不确定是否要更改 contentView,但我相信答案是否定的。您也不能在代码中更改它,因为该属性是只读的。我通常坚持自定义 UITableViewCells。我认为它们是单元格视图的视图控制器。
    【解决方案3】:

    我真的不知道答案,但我可以建议解决这个问题:

    1) 将现有单元格从其他表格视图复制到您正在处理的单元格。

    2) 现在您的单元格下将有 contentView。通过添加您的视图来设计此单元格。

    3) 为您的单元格创建一个类,例如 NewCell,然后在该类中手动创建 IBOutlet:

    @property (nonatomic, strong) IBOutlet UILabel* mainLabel;

    4) 将情节提要中的单元格类分配给您刚刚创建的类。完成此步骤后,您可以将 outlet 从 storyboard 拖到 class。

    我不确定这是 XCode 5 的错误还是有意为之,我也在寻找更好的解决方案。

    【讨论】:

    • 也偶然发现了这个奇怪的问题。如果有人有任何其他建议,请注意他们
    • 好吧,如果我尝试将标签连接到 IB 中的自定义单元类,我没有得到任何选项(连接到的属性)。当我 ctrl+拖动标签到 IB 中的自定义单元格类时,单元格甚至没有突出显示。我只能将它拖到单元格的内容视图中,这无济于事,因为它无法自定义
    • 请看下面的答案,这是分辨率。 Xcode 有一个错误,我提交了 Radar。
    • 对我来说,当我在单元格中有一个 contentView 时,我只需将我的标签拖到它上面(确保这些标签在 contentView 内部,而不是在外部)。通过将单元格类设置为NewCell,我可以控制并从标签拖动到NewCell.h 并在那里设置IBOutlet。如果它不适合你,尝试重新启动 Xcode 怎么样?
    【解决方案4】:

    新建带有xib接口的uiviewcontroller,并添加所需的子视图。另外,建立iboutlet连接。

    现在,将新创建的视图控制器的 .h 文件中的 viewcontroller : UIViewcontroller 重命名为 viewcontroller : UITableviewcell。

    您的 tableviewcell 已创建并可以与任何类的任何 UITableview 一起使用。

    希望对你有帮助。

    【讨论】:

      【解决方案5】:

      我可能会复制其他人的答案,但我发现这个解决方法有助于绕过这个愚蠢的 XCode 错误。简短的解决方案:在 Storyboard 中构建自定义单元格时,请勿将 UI 元素拖到单元格或内容视图中。

      相反,将它们拖到外部,使它们成为父表视图的子元素!

      如果您使用左侧的小层次菜单来确保您的元素在正确的位置结束,则最简单的拖放操作。

      将元素拖入后,只需按住 Control 单击并从自定义单元格拖动到 UI 元素即可建立连接。呜呼!

      一旦设置好连接,然后(最后)将 UI 元素拖回自定义单元格的内容视图中,并像往常一样布置它们。

      更新:虽然我的方法有效,但请在下面的答案中查找 thomasdao 的评论,他只是将连接直接拖到 .h 文件中(您声明 IBOutlets 的左边距中的小圆圈) - 这是实际上是最简单的解决方案,但不幸的是它作为评论被卡住了。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-02-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多