UIView 只嵌入在 UINavigationController 和 UITabBarController 中,为啥?
Posted
技术标签:
【中文标题】UIView 只嵌入在 UINavigationController 和 UITabBarController 中,为啥?【英文标题】:UIView embedded only in UINavigationController and UITabBarController, why?UIView 只嵌入在 UINavigationController 和 UITabBarController 中,为什么? 【发布时间】:2012-07-16 05:12:05 【问题描述】:在 ios 中,为什么 UIView(和其他)只能嵌入在 UINavigationController 或 UITabBarController 中?这两个类有什么特别之处?
编辑:哎呀,想问“UIViewController”而不是 UIView。
【问题讨论】:
【参考方案1】:不,这不是真的。 UIView 嵌入了 UIViewController。该类为 UIView 提供生命周期。它负责从初始化视图到释放视图。
UINavigationController 和 UITabBarController 只是从 UIViewController 派生的。它们分别为构建层次结构和在层次结构之间切换提供了额外的功能。
【讨论】:
【参考方案2】:UIView 可以嵌入到任何 ViewController 或其子类中。 UINavigationController 和 UITabbarController 只不过是 UIViewController 的子类。
【讨论】:
【参考方案3】:我认为您所指的嵌入是embed in
菜单项,它只允许UITabBarController
和UINavigationController
。这意味着 XCode 将采用您的 UIViewController
子类并将其嵌入到这两个控制器之一中。它们是特殊的,因为它们是其他控制器的控制器(UIViewControllers 的集合)。 Xcode 只是从构建视图控制器中消除了一些痛苦,然后将其添加到导航控制器或标签栏。您可以轻松地embed
它在其中之一中一键单击,无需代码。比以前的 XCode 版本容易得多。
【讨论】:
【参考方案4】:如果您在 Interface Builder 中谈论“嵌入”,是的,从 iOS 5 开始,Interface Builder 只会为三个视图控制器容器(UINavigationController
、UITabbarController
和 UISplitViewController
)优雅地设计用户界面。这些是开箱即用的三个容器控制器。但是,您可以进行自己的视图控制器包含。有关视图控制器包含的信息,请参阅Session 102 in WWDC 2011。另请参阅UIViewController Class Reference 中有关视图控制器包含的部分。
【讨论】:
以上是关于UIView 只嵌入在 UINavigationController 和 UITabBarController 中,为啥?的主要内容,如果未能解决你的问题,请参考以下文章
嵌入在 UIView 中的动态 UITableView - 计算高度