来自 NIB 的可扩展自定义 UITableViewCell

Posted

技术标签:

【中文标题】来自 NIB 的可扩展自定义 UITableViewCell【英文标题】:Expandable custom- UITableViewCell from NIB 【发布时间】:2012-02-09 10:53:15 【问题描述】:

我需要创建可扩展单元格形式的笔尖。如果我的表格视图中的单元格尺寸等于自定义单元格笔尖的尺寸,它看起来很好。但是当我试图改变自定义单元格的高度以使其更小时,它看起来像这样:

您能给我一些建议吗?如何从笔尖展开/折叠自定义表格单元格并避免这种影响?

UPD:我已经实现了 heightForRowAtIndexPath,它工作正常。基本问题是只有在单元格展开时才应该可见的所有出口在折叠时在所有单元格的所有表格视图中可见

【问题讨论】:

【参考方案1】:

我找到了解决方案,而且非常简单。我只需要在 Interface Builder 中设置我的自定义单元格的“Clip SubViews”属性。

【讨论】:

展开表格视图的非常简单的提示。【参考方案2】:

查看heightForRowAtIndexPath 数据源方法。它可能看起来像这样:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
    if (expandableCell)
        return 20.0f;
    return 44.0f;

【讨论】:

这个答案是正确的,但是当您展开/收缩单元格时,您还必须在表格上调用 [tableView reloadCellAtIndexPath:...] ,否则它不会再次调用 heightForRowAtIndexPath 方法.一种方法是在您展开/收缩单元格时从单元格中广播 NSNotification 并在表格的视图控制器中拾取它,以便它知道单元格需要重新加载。 @NickLockwood,是的,你是对的。但是 OP 只意味着这个问题,重新加载表看起来像另一个问题。也许 OP 解决了它,也许在另一个线程中问它:) 我已经实现了 heightForRowAtIndexPath 并且工作正常,基本问题是表格单元笔尖的所有出口都在 ViewDidLoad 之后放置在表格视图上 @stalk,检查你的网点的自动调整掩码。 主要情况是outlets不应该是autoresizable,当单元格折叠时它应该看起来像屏幕截图中row0和row1的单元格,并且一些outlets应该在展开后才显示。但在我的情况下,我在表格视图上拥有所有出口

以上是关于来自 NIB 的可扩展自定义 UITableViewCell的主要内容,如果未能解决你的问题,请参考以下文章

为啥不调用基于 nib 的自定义表格单元格的 init 方法

iPhone:更改来自 NIB 的 UITableViewCell 的高度

如何在 ios 中使用 UI NIB 而不是 loadNibNamed 来自定义 UI 表格视图单元格?

基于Spring的可扩展Schema进行开发自定义配置标签支持

利用来自外部加载的 Nib 的 IBOutlets/IBActions

来自笔尖的自定义 UiTableViewCell 没有重用?