1

我正在尝试创建自定义视图并将其加载到窗口中。

最后,我知道需要遵循几个步骤,反映我缺少的关键关系。我希望有人可以通过一系列步骤解释如何创建视图对象、视图控制器、关联的 .xib,然后将其加载到窗口中(在清除当前视图之后)。

我的意思是在哪里声明和初始化,需要导入什么,一切的真正细节。因为我正在翻阅我拥有的每一本书,而我那微不足道的大脑并不清楚。

谢谢!

4

1 回答 1

1

如何创建视图对象、视图控制器、关联的 .xib,然后将其加载到窗口中……</p>

这是几件事,其中一些是冲突的。

如果您在代码中创建视图,则不需要(也不应该)也在 nib 中创建它,反之亦然。

如果您创建视图控制器来加载 nib,您将在 nib 中创建视图,因此您绝对不应该在代码中创建相同的视图。

您不需要为大多数视图创建视图控制器。更常见的是让每个控制器都拥有一个窗口的全部。唯一需要视图控制器的情况是在单个窗口中管理复杂的视图层次结构(如果您将应用程序设为单窗口,则很可能)。

…(清除当前视图后)。

Cocoa 中没有“当前视图”。您可以有多个窗口,每个窗口都有一个您通常不会在运行时编辑的深层视图层次结构。在某种选项卡式 UI 之外将一个视图交换为另一个视图是非常不寻常的。

在代码中创建视图对象

向所需的视图类发送一条alloc消息,并向返回的视图发送一条initWithFrame:消息(除非该类的文档另有规定)。当然,您需要释放或自动释放此视图。

在 nib 中创建视图对象

给它自己的笔尖(特别是对于视图控制器)

使用 IB(新建)或 Xcode(添加文件)中的 view-nib 模板。如果您在 Xcode 中创建它,请不要忘记获取有关它的信息并使其可本地化。如果您在 IB 中创建它,您应该将它保存到您的 .lproj 文件夹之一中;那么它已经可以本地化了。

从这些模板创建的 nib 将包含一个空的 NSView。您可以更改其类和/或添加子视图,如下所述。

在现有的笔尖中制作

将“自定义视图”从库调色板拖到 nib 窗口中,然后在 ⌘6 检查器上设置视图的类。

您只对 nib 中的顶级视图执行此操作。有关其子视图,请参见下文。

将视图放入窗口的视图层次结构

如果视图应该是窗口视图层次结构的根(窗口的内容视图)

设置窗口的内容视图。

在 IB 中,您不能更改窗口的内容视图。相反,你改变它的东西——它的类、子视图等。没有理由尝试用 IB 中的另一个视图替换窗口的内容视图。

如果视图应该是现有视图的子视图

在代码中执行此操作的方法是向 superview 发送addSubview:消息。

如果两个视图都在同一个 nib 中,则创建子视图并将其添加到同一行为中的父视图。将“自定义视图”从库中拖到超级视图,而不是 nib 窗口,然后在⌘6检查器上设置子视图的类。

(If you're customizing one of the standard Apple views, rather than making a completely original custom view, drag the standard Apple view you based yours on from the Library, then change its class to your customized subclass.)

于 2010-10-16T06:01:24.087 回答