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 菜单项,它只允许UITabBarControllerUINavigationController。这意味着 XCode 将采用您的 UIViewController 子类并将其嵌入到这两个控制器之一中。它们是特殊的,因为它们是其他控制器的控制器(UIViewControllers 的集合)。 Xcode 只是从构建视图控制器中消除了一些痛苦,然后将其添加到导航控制器或标签栏。您可以轻松地embed 它在其中之一中一键单击,无需代码。比以前的 XCode 版本容易得多。

【讨论】:

【参考方案4】:

如果您在 Interface Builder 中谈论“嵌入”,是的,从 iOS 5 开始,Interface Builder 只会为三个视图控制器容器(UINavigationControllerUITabbarControllerUISplitViewController)优雅地设计用户界面。这些是开箱即用的三个容器控制器。但是,您可以进行自己的视图控制器包含。有关视图控制器包含的信息,请参阅Session 102 in WWDC 2011。另请参阅UIViewController Class Reference 中有关视图控制器包含的部分。

【讨论】:

以上是关于UIView 只嵌入在 UINavigationController 和 UITabBarController 中,为啥?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 UIView 中嵌入 UITableView?

嵌入在 UIView 中的动态 UITableView - 计算高度

如何为嵌入在 UITableViewCell 中的 UIView 设置动画

iOS开发UIView的动画与嵌入的UIButton的问题

使用正确的框架在 UIView 中嵌入谷歌地图

Embedding UITableView 嵌入一个 ScrollView,嵌入一个 UIView