我可以直接从具有特定大小类或特征集合的 xib 加载 UITableViewCell 吗?

Posted

技术标签:

【中文标题】我可以直接从具有特定大小类或特征集合的 xib 加载 UITableViewCell 吗?【英文标题】:Can I load a UITableViewCell directly from a xib with a specific size class or trait collection? 【发布时间】:2015-01-07 21:12:24 【问题描述】:

我正在尝试在我的 ios 应用中执行以下操作:

UITableView 嵌入到父滚动视图中;表格视图将扩展其框架以显示其所有内容(我需要这样做,因为表格视图数据是更大更复杂屏幕的一小部分,我不希望嵌套滚动行为) 我的 iPhone 和 iPad 布局不同,因此此表格视图中的单元格使用表格视图单元格 xib 中定义的大小类。 由于我希望表格视图的内容大小准确,我认为我不能使用UITableViewAutomaticDimenstion作为行高,所以我实现tableView:heightForRowAtIndexPath:并直接从笔尖加载我的表格视图单元格的实例并将该视图存储为一个属性,通过它我可以根据自动布局计算单元格的高度。

我的问题源于这里;当我直接从笔尖加载单元格时,在 iPad 上,单元格使用笔尖中定义的“任何”尺寸类中的约束和布局,这是不正确的,因为 iPad 的布局仅在我的笔尖中使用常规宽度类。这会导致我的表格视图单元格高度错误并且在我的情况下太大。

我需要知道的是,是否有办法强制我加载的单元格上的特征集合,以便在每种设备类型上使用我的视图的适当约束。我似乎在文档中找不到任何允许直接在UIViews 中进行此操作的内容,仅在UIViewControllers 中,我不热衷于在随机屏幕外UIViewController 中保持屏幕外UITableViewCell 如果我可以帮助它。有什么想法吗?

【问题讨论】:

【参考方案1】:

写完这篇文章后,我发现了这个问题:Offscreen UITableViewCells (for size calculations) not respecting size class? 这似乎问了一个类似的问题,并且那里的答案对我有用(将屏幕外表格视图单元格添加为表格视图的子视图,或提供其他一些视图特质环境)。这不是很漂亮,但似乎可以解决。

【讨论】:

以上是关于我可以直接从具有特定大小类或特征集合的 xib 加载 UITableViewCell 吗?的主要内容,如果未能解决你的问题,请参考以下文章

对于直接从 Xib 加载的 UIView,何时应用 UIView 大小类?

从 XIB 加载 UIView 大小不正确

从 xib 获取特定的视图控制器?

如何根据 UITextView 动态调整 xib 的大小

计算xib文件的高度

具有相同 XIB 单元格和按钮的多个集合视图