以编程方式将对象添加到 UIViewController 和 UITableViewController 原型单元之间有区别吗?

Posted

技术标签:

【中文标题】以编程方式将对象添加到 UIViewController 和 UITableViewController 原型单元之间有区别吗?【英文标题】:Is there a difference between programmatically adding objects to a UIViewController and a UITableViewController's prototype cell? 【发布时间】:2016-01-08 22:30:26 【问题描述】:

我看到他们通过故事板将标签等添加到UITableViewController 的原型部分的视频。这和我只是将这些对象添加到常规的 UIViewController 一样吗?

我确实尝试过,但遇到了限制问题。如果我从UIViewController 复制并粘贴NSLayoutConstraint,我会开始收到错误。所以我假设约束的处理方式也不同。例如,不是使用view.CenterX,而是contentView.CenterX,对吗?

编辑:我忘了提到我不确定代码应该放在哪里。它似乎应该进入UITableViewController,因为这是原型单元格所在的位置,但在示例代码中,我看到它已添加到UITableViewCell

【问题讨论】:

UIViewControllerUITableViewController 的视图类型不同,后者具有UITableView 作为其view 属性。因此,如果您的视图是类似列表的行,并且您认为所有内容都会在行中重复,请使用 UITableViewController 并将对象添加到您的单元格中。否则使用UIViewController 并建立您的视图。 此外,当您从具有与此 view 相关的约束的 view 复制对象然后将其粘贴到另一个 view 时,您必须再次添加约束(不是宽度高度约束,但上、下、左、右等),因为父视图已更改。 【参考方案1】:

通常你会这样做:

将视图和其他 UI 组件放入 UIViewController 的根视图(即 UIView)中

将原型静态单元格放入 UITableViewController 的根视图(即表格视图)

第一种情况在布局方面是完全灵活的。 您有责任定位和调整视图以创建有意义的布局。

第二种情况受到更多限制,因为 TableViewsimple 将所有原型单元格(它们本身包含其他子视图)放入垂直堆栈。

只有您才能在特定项目/应用的上下文中说出更适合您需求的内容。

【讨论】:

那些静态单元格有点像 UIViewControllers?就像你在它的子视图中添加对象一样?

以上是关于以编程方式将对象添加到 UIViewController 和 UITableViewController 原型单元之间有区别吗?的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式将控件添加到WPF表单

以编程方式将控件添加到 WPF 表单

以编程方式将属性添加到 Core Data

以编程方式将 id 添加到 R.id

以编程方式将 ScriptManager 添加到页面?

以编程方式添加的视图对象未显示在情节提要中