以编程方式将对象添加到 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
。
【问题讨论】:
UIViewController
和UITableViewController
的视图类型不同,后者具有UITableView
作为其view
属性。因此,如果您的视图是类似列表的行,并且您认为所有内容都会在行中重复,请使用 UITableViewController
并将对象添加到您的单元格中。否则使用UIViewController
并建立您的视图。
此外,当您从具有与此 view
相关的约束的 view
复制对象然后将其粘贴到另一个 view
时,您必须再次添加约束(不是宽度高度约束,但上、下、左、右等),因为父视图已更改。
【参考方案1】:
通常你会这样做:
将视图和其他 UI 组件放入 UIViewController 的根视图(即 UIView)中
或
将原型静态单元格放入 UITableViewController 的根视图(即表格视图)
第一种情况在布局方面是完全灵活的。 您有责任定位和调整视图以创建有意义的布局。
第二种情况受到更多限制,因为 TableViewsimple 将所有原型单元格(它们本身包含其他子视图)放入垂直堆栈。
只有您才能在特定项目/应用的上下文中说出更适合您需求的内容。
【讨论】:
那些静态单元格有点像 UIViewControllers?就像你在它的子视图中添加对象一样?以上是关于以编程方式将对象添加到 UIViewController 和 UITableViewController 原型单元之间有区别吗?的主要内容,如果未能解决你的问题,请参考以下文章