1

请帮我理解UiView和UIViewController的概念,我知道它像mvc模式一样工作,而且据我所知UIView是视图和控制器的视觉表示,它负责这个视图对吗?当我们用initwithnibname创建viewcontroller的实例时,我们以编程方式将某些视图附加到某个控制器上,换句话说,我们说他负责绘制该视图的控制器是?了解uiview和uiviewcontroller

如果我们不用nib初始化它,它是否会自动找到该笔尖?

这个附件也可以通过接口生成器,我是吗?

但是presentModalViewController函数呢?他得到viewcontroller参数并显示视图,或者我不明白它的含义?也有可能做一个没有xib文件的视图,只有在viewcontroller和显示它后?

回答

4

据我所知UIView是View和控制器的视觉表示,它负责 这个视图对不对?

单个视图控制器通常负责整个视图层次结构。视图控制器管理相关内容的“screenful”或至少一个区域。

,当我们创建视图 - 控制的实例与initwithnibname我们编程 附加一些观点有些控制器,换句话说,我们说的控制器,他是 负责起草这一观点是?

不 - 视图应该知道如何绘制自己。视图控制器可能会告诉视图要绘制什么,但视图需要知道如何将其渲染到当前图形上下文中。

如果我们不用nib初始化它,它是否会自动找到该笔尖?

它可以。如果您将nil传递给nib名称和包,则UIViewController将尝试查找与视图控制器类的名称匹配的nib。但是,如果您愿意这样做,您可以覆盖-loadView以编程方式创建您自己的视图。

但是presentModalViewController函数呢?他得到视图控制器参数 并显示视图或我不明白它的意思?

以模态方式呈现的视图控制器仍负责其视图层次结构。 -presentModalViewController:真正处理视图控制器之间的关系 - 视图控制器的视图如何移动到屏幕上,以及完成后会发生什么。

也是可以做一个没有xib文件的视图,只有在 视图控制器和后显示它?

是的,如果你愿意,你当然可以这样做。每个视图都有一个-initWithFrame:初始值设定项,您可以使用它来初始化视图,但有些视图提供了其他选项。例如,UIButton有一个可用于创建按钮的+buttonWithType:方法。