【问题标题】:How to display a UITableView, which is placed inside a UIView .xib file?如何显示放置在 UIView .xib 文件中的 UITableView?
【发布时间】:2018-11-30 18:57:07
【问题描述】:

将自定义 UIView 加载到 ViewController 中很简单:

if let randomView = Bundle.main.loadNibNamed("RandomView", owner: self, options: nil)?.first as? RandomView {

        self.view.addSubview(randomView)

    }

这个 randomView 通常还会显示任何标签、文本字段等,它们位于其 .xib 文件中。但是,如果我将 UITableView 放在它的 .xib 文件中,它根本不会显示。

为了增加混乱:如果我创建一个单独的 xib 文件并在其中放置一个 UITableView,我可以使用 Bundle.main.loadNibNamed 加载它并正确显示。

我认为这与设置委托或数据源无关。将裸表放在 randomView 的 .xib 文件中时,它本身不会显示。虽然标签、文本输入等其他元素也可以。

单独的 .xib 文件中的 UITableView 会在没有设置任何委托或数据源的情况下正确加载和显示。

第一个示例不显示表格,第二个示例显示。

【问题讨论】:

  • 为了让您更正:表格视图是您的randomView 的子视图,但是当您将randomView 添加为self.view 的子视图时,它不再具有表格视图作为子视图?
  • 是的。我添加了两个屏幕截图来显示两个示例的层次结构。两者都使用 loadNibNamed 方法加载到 viewController 中。
  • 如何访问第一个示例中的表格视图,以设置数据源?还要检查第一张图片中的红色箭头 - 也许一些自动布局约束会扰乱您的视图?
  • 所以问题实际上是 UITableView 缺少约束,这很奇怪,因为 UIView 中的其他元素都不需要显示约束。当我将 UITableView 放在单独的 .xib 中时,它也不需要显示约束。谢谢你的提示!!!
  • @r6bQ4xoC79rhJXFw 一些 UI 元素具有所谓的固有内容大小,而有些则没有。那些不需要高度和宽度限制的。其他人将需要它们。从 xib 加载它仍然需要 with 和 height 但最有可能根据最佳猜测加载。

标签: ios uitableview


【解决方案1】:

问题是由于缺少约束(见第一张图片中的红色箭头)导致表格视图无法正确显示。

【讨论】:

    猜你喜欢
    • 2019-01-20
    • 2011-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-14
    • 2011-01-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多