这是一个非常简单的简单问题,我相信答案是“是的,这是最佳实践”,但我只是想问这个问题。
在Xcode的情节提要中创建新视图时,创建单独的自定义视图控制器文件来专门处理每个视图是一个好主意吗?
意思是,如果我创建一个名为“ login quiz”的新视图,是否应该创建一个“ loginQuizViewController”来处理我为该视图编写的所有代码?
简短答案:
是的,每个情节提要面板场景通常都具有与其关联的唯一视图控制器类。一个视图控制器有一个root view
,它的根下又可能有许多子视图,并且每个子视图可能还有其他子视图。这种视图集合被统称为“视图层次结构”。
长答案:
是的,每个情节提要“场景”都有与之关联的视图控制器。通常,此视图控制器类是UIViewController
该特定Interface Builder场景所特有的特定子类。但是您不必一定有视图控制器子类,例如,可以使用现有的类之一(例如,这对于导航控制器场景或选项卡栏控制器场景并不罕见)。
但是,如果您有与特定情节提要板场景相关联的任何自定义逻辑,那么可以,通常您将具有针对该特定场景的唯一视图控制器子类。
有两个小澄清:
您指的是“测验视图”。
出于口语目的,这很好,但是为了清楚起见,当我们在讨论本测验的所有内容时,它实际上是一个复杂的视图层次结构,而不仅仅是一个视图层次。
单个“测验”场景将与唯一的视图控制器类相关联,并且该视图控制器类的实例将具有单个“根视图”(由view
属性标识),但是view
将具有一堆子视图(例如,图片视图,按钮,标签等),其中一些可能具有自己的子视图。
因此,一个故事板场景具有其自己独特的视图控制器类,但与整个视图层次结构相关联。
我们通常认为场景及其关联的视图控制器代表您在任何给定时间点可能看到的所有内容,但并不总是一对一的关系。有时,您看到的内容由几个情节提要板场景及其各自的视图控制器组成。
例如,如果您使用的是导航控制器,则导航控制器会照顾顶部的导航栏,而视图控制器可能会照顾导航栏下方的所有内容。屏幕上可见的内容由这两个视图控制器组成。
或者,在一个更极端的示例中,我们可以定义自己的视图控制器容器。在下面的示例中,当我们呈现A时,我们可以定义屏幕的下半部分,以由完全独立的场景B来管理,场景B具有自己的视图控制器:
在这种情况下,A和B都有自己的IB场景和各自的视图控制器。通过在A场景中添加“容器视图”(UIView
以上屏幕快照中的浅蓝色)来实现此目的。
但是要点是,您在屏幕上看到的内容可能是由单个情节提要面板场景和视图控制器捕获的,或者可能由多个情节提要组成。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句