在同一个 ViewController 中有子视图是不是正确?
Posted
技术标签:
【中文标题】在同一个 ViewController 中有子视图是不是正确?【英文标题】:Is it correct to have subViews in the same ViewController?在同一个 ViewController 中有子视图是否正确? 【发布时间】:2013-03-11 23:19:30 【问题描述】:所以,这是我的问题。我有一个 ViewController,我想在不同的位置(一个上一个下一个)添加 2 个不同的视图,但它们会同时出现,使用方法“addSubview”,但我不知道这是否正确,在一个 Viewcontroler 中有不同的 subViews? 我没有使用 Storyboard,我使用 XCode4.1 到 ios 4.3
【问题讨论】:
【参考方案1】:您将视图和视图控制器混为一谈。
视图控制器可以控制以显示其数据并执行其业务逻辑的视图数量不受严格限制。
视图可以拥有的子视图数量也不受限制。
只有一件事。当这些视图彼此相当独立时,不要将一个视图作为另一个视图的子视图。如果 a 是底层视图, b 和 c 是独立子视图,则执行以下操作: [a addSubView:b]; [a addSubView:c];
问题出在哪里?
【讨论】:
感谢您的宝贵时间。这是我的情况。我有 ViewController A,在这个 ViewController 中我声明了 UIViewController“x”和 UIViewController“y”。现在,在“A”的 viewDidLoad 方法中,执行以下操作:“[A addSubView:x.view]; [A addSubview:y.view]”。那么,这样对吗? 不,这是不对的。如果 x 和 y 是视图控制器(属于或继承自 UIViewController 的类的对象),那么您不能使用 A addSubView: 添加它们。如果 A 是视图控制器,则不能在 a 上使用 addSubView。您只能将子视图添加到视图(从 UIView 继承的对象)。所有这些都可以由同一个视图控制器控制。 只是为了给一个简单的事情增加一些复杂性:您可以创建许多具有相关视图的视图控制器,并将这些视图控制器添加到由另一个视图控制器控制的视图中。这很少是明智的做法。但这是可以完成的。由于您使用的是 SDK 4.x,因此您不能使用 6.x(我认为)引入的 UIContainerView 来实现此目的。 那么,如果A有一个UIView,而“x”和“y”也有一个UIView,我可以添加[A.view addSubView:x.view]和[A.view addSubView: y.view]"?对吗? 如果你需要就去做。但是请问问自己是否真的需要同时显示多个视图控制器。如果你这样做,那就去做。最后,它们和其他对象一样是objective-c对象,可以创建、使用、引用等等。以上是关于在同一个 ViewController 中有子视图是不是正确?的主要内容,如果未能解决你的问题,请参考以下文章
ViewController 中的 View 类正在发生变化?