UITableView 自定义单元格在 iPad Storyboard 上不起作用,但在 iPhone 上起作用

Posted

技术标签:

【中文标题】UITableView 自定义单元格在 iPad Storyboard 上不起作用,但在 iPhone 上起作用【英文标题】:UITableView custom cell not working on iPad Storyboard, but do on iPhone 【发布时间】:2014-04-27 20:15:08 【问题描述】:

我遇到了一个奇怪的问题,我的自定义单元格标签显示在正确的位置,但自定义单元格没有加载。我正在创建一个通用应用程序,我的 iPhone 和 iPad 共享除故事板之外的所有代码。 iPhone版可以正常使用。

这是自定义单元格的图片:

这是我在 iPad 上运行时的样子:

我从头开始重新创建 TableViewController,从头开始重新创建单元格,重新连接所有内容,并一次又一次地进行三次检查。该类已分配(显然是因为标签发生了变化),而且看起来一切都很好。

就像我说的,相同的设置在 iPhone 故事板上工作得很好。

请注意顶部单元格上的小型 Discloser 指示器。 segue 从那里的第一行开始工作,这是应该的。

为什么要创建这种奇怪的布局?谢谢!

【问题讨论】:

你实现tableView:heightForRowAtIndexPath:了吗? 我没有,因为我的印象是它将使用情节提要中设置的高度。它适用于 iPhone。您是否需要设置它才能将两个故事板与一个 tableview 类一起使用? 我无法解释为什么它适用于一个而不适用于另一个。我记得过去曾遇到过它的问题,对我的代码的简短扫描表明,即使是在 nib 中定义的自定义单元格,我通常也会实现它。您是否在两个故事板中定义相同的单元格约束? 是的,两个故事板中的一切都是相同的,除了单元格大小和字体大小以更好地适应更大的屏幕。在我的设置中很难实现它。不过我想我必须开始探索它。 Xcode 中的错误?工作的标签真的让我想知道。 【参考方案1】:

我认为您必须实现委托方法tableView:heightForRowAtIndexPath: 或在tableView 上设置rowHeight 属性,如here 所述。

至于为什么它可以在 iPhone 上运行,也许它恰好是一个合适的尺寸。 Apple docs for rowHeight 状态:

如果没有显式设置行高,UITableView 会将其设置为标准值。

【讨论】:

这很有趣。 iPhone 肯定不是标准尺寸的单元,所以它从情节提要中提取尺寸。我在以前的 iphone 应用程序中已经这样做了,而且效果也很好,但这是我的第一个通用应用程序,所以这可能是问题所在。我会检查一下。另外,为什么标签会出现在正确的位置?它的某些部分正在工作..... 你是对的。 rowHeight 值没有被占用。有趣的是,它是在代码中设置的,应该覆盖故事板,但似乎故事板赢了。我仍然要探索这个。谢谢,你帮助我融化了我的大脑。

以上是关于UITableView 自定义单元格在 iPad Storyboard 上不起作用,但在 iPhone 上起作用的主要内容,如果未能解决你的问题,请参考以下文章

使用自定义单元格在两个 UITableView 之间传递数据

UITableView 中的自定义单元格在滑动编辑后立即移动

用于 UITableView 的自定义 XIB 单元格在滚动时卡住/卡住

UITableView 可重用的自定义单元格在子视图中显示错误的内容

iOS - 使 UITableView 与自定义单元格在按钮单击时可编辑

UITableView 单元格在向下滚动然后备份后消失