我是iOS开发人员的新手,正在使用现有项目。我只是有一个关于如何概念化视图和视图控制器以及处理它们的约定的快速问题。
我注意到基类UIViewController
类有一个属性view
,它引用了一个实际的“物理”(缺少一个更好的单词)视图,而控制器基本上管理了这个物理视图(和它到模型等 - 我理解的标准mvc东西。)
这表明视图控制器在可可触摸中具有概念优先权。但是,当添加子视图(到父物理视图?或父视图控制器?)时,它接受物理视图,而不是视图控制器。
是否应该首先创建子视图 controller (可能会创建自己的物理视图),然后将其view
属性传递给addSubView
?我只是想确保我不会错过传统工作流程中的明显内容。
答案 0 :(得分:1)
视图和视图控制器不是1:1的比例。视图控制器根据需要为给定的功能区域管理尽可能多的视图 - 在iPhone上,通常是一个充满内容的屏幕,但这个定义略有变化。
控制器的视图属性只是父视图 - 这可以包含您完成工作所需的子视图。控制器在这些视图和数据模型之间进行协调,以提供应用程序的功能。
您可以拥有子视图控制器,它们被添加到视图控制器层次结构以及视图层次结构中(子视图控制器的视图被添加为父视图控制器视图的子视图)但是你不会为每个子视图做这件事。
2012年WWDC上有一次精彩的演讲("视觉控制器的演变",IIRC),这很好地解释了这一点。