我是iOS开发新手,正在与现有项目合作。我只是有一个关于视图和视图控制器应该如何概念化的问题,以及处理它们的约定是什么。
我注意到,基础UIViewController
类有一个属性view
引用了一个实际的"物理"(缺乏一个更好的词)视图,而控制器本质上管理物理视图(并将其绑定到模型等-我理解的标准mvc的东西)。
这表明视图控制器在cocoa touch中具有概念上的优先权。然而,当添加子视图(到父物理视图?)或父视图控制器?)它接受物理视图,而不是视图控制器。
是否期望我首先创建子视图控制器(大概创建自己的物理视图),然后将其view
属性传递给addSubView
?我只是想确保我在这里没有错过传统工作流程中一些明显的东西。
视图和视图控制器不是1:1的比例。视图控制器管理给定功能区域所需的尽可能多的视图——在iPhone上,通常是一个充满内容的屏幕,但这个定义略有变化。
控制器的view属性就是父视图——它可以有许多子视图,只要你需要完成工作。控制器在这些视图和数据模型之间进行协调,以交付应用程序的功能。
你可以有子视图控制器,它们被添加到视图控制器层次结构以及视图层次结构(子视图控制器的视图被添加为父视图控制器视图的子视图),但你不会对每个子视图都这样做。
在WWDC 2012("视图控制器的进化",IIRC)上有一个很棒的演讲很好地解释了这一点。