在所有视图控制器中只有一个viewDidLoad或者在主视图控制器中有多个UIViews更好吗?

时间:2016-07-01 17:10:42

标签: ios uiview

现在,我有一个登录视图控制器,可以根据用户交互动态隐藏和添加子视图。拥有一个视图控制器或多个视图控制器的多个UIViews更好吗?

3 个答案:

答案 0 :(得分:1)

当然,出于多种原因,拥有多个视图控制器会更好:

  1. 每个视图控制器都有自己的代码/逻辑/功能。
  2. 更适合内存管理。从视图控制器完成后,系统将自动从内存中释放它。当不使用某些视图时,使用多个视图将在系统中过载。
  3. 更好地组织您的项目。您将只显示/关闭/推送/弹出视图控制器并在彼此之间传递数据。相反,你将处理隐藏和显示UIViews的可怕逻辑。
  4. 使用一个视图控制器将拥有大量代码,从长远来看,项目将是一个不可能完成的管理任务。

答案 1 :(得分:1)

如果你需要关心任何一个孩子的视图生命周期,那么拥有孩子UIViewControllers的好处就是如此。例如,如果在某些子视图(子视图)中你需要知道它是否会触发某些逻辑,那么使用子UIViewControllers会很好。

另一个原因可能是,如果您想在自定义容器中使用视图控制器转换,如Apple在UIViewController类引用中所描述的: https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIViewController_Class/index.html#//apple_ref/occ/instm/UIViewController/transitionFromViewController:toViewController:duration:options:animations:completion

但是,对我来说听起来并不像你需要这样,听起来你只是显示/隐藏你的观点,或以其他方式制作动画。 但是如果你的观点不关心任何这些,只需要渲染UI元素,我会说使用子节点UIViewControllers增加了额外的复杂性而没有太大的好处。

这是假设无论哪种方式,您的所有视图都存在于单个UIViewController的视图中。如果你在UINavigationController中推送和弹出视图控制器,或者以模态方式呈现ViewControllers,你肯定应该使用UIViewControllers。

此外,您绝对不应该将所有视图代码放在单个视图控制器中。您应该使用UIView的子类,或其他一些确保将组件分开的机制。

例如,你可能有:

LoginViewController - 组织和隐藏并显示各个视图
SignInView - 显示签到表格
RegisterView - 显示寄存器形式
......等等。

答案 2 :(得分:0)

拥有多个视图控制器更好,因为您可以更轻松地单独编码它们。导航也会很好,这对用户体验有益。 内存管理将是高效的。 MVC架构(模型视图控制器)将成为Massive View Controller,在调试时会很头疼。

查看此答案以获得更清晰的信息。我认为你在ViewController和View之间感到困惑。

在链接中查看此问题的已接受答案。希望能帮助到你。 About viewController's "viewDidLoad" and "viewWillAppear" methods