【问题标题】:Do I need to set heightForRowAtIndexPath if I am using a custom UITableViewCell?如果我使用自定义 UITableViewCell,是否需要设置 heightForRowAtIndexPath?
【发布时间】:2011-03-01 06:51:06
【问题描述】:

如果我使用自定义 UITableViewCell,是否需要设置 heightForRowAtIndexPath?在我的 NIB 中,我已经设置了单元格高度。

当我覆盖 heightForRowAtIndexPath 时,单元格的内容不会出现,即使它设置为 NIB 中定义的高度。

如果我不覆盖 heightForRowAtIndexPath 单元格的内容会出现,但是由于默认高度不够大,所以会溢出。

【问题讨论】:

    标签: iphone objective-c cocoa-touch uitableview interface-builder


    【解决方案1】:

    如果所有行的高度相同,则可以设置UITableViewrowHeight 属性,而不是实现tableView:heightForRowAtIndexPath:。如果你有不同高度的行,那么你必须实现tableView:heightForRowAtIndexPath:

    这些方法都不会自动返回您在 NIB 中定义的单元格的高度,因为它们会在您开始在 tableView:cellForRowAtIndexPath: 中构建单元格之前被调用。

    要使用在您的 NIB 中定义的单元格的高度,我建议您定义一个名为 prototypeCell 的控制器的自定义属性,它将保存一个永远不会显示在您的表格上的单元格。在tableView:heightForRowAtIndexPath: 中,检查prototypeCell 是否为nil。如果是,请从您的 NIB 初始化它。然后返回prototypeCell.frame.size.height

    【讨论】:

    • 你是如何初始化prototypeCell的?您在使用initWithStyle:reuseIdentifier: 吗?如果我使用它,那么 prototypeCell.frame.size.height 返回默认高度 (44) 而不是 xib 中定义的高度。
    • nib load 可以为您初始化它,并包含正确的高度。您可以为单元注册一个 nib,或将原型单元映射到控制器 xib 中的 IBOutlet。
    猜你喜欢
    • 2013-01-01
    • 1970-01-01
    • 2020-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多