我正在尝试创建一个自定义视图并将其加载到窗口中。
最后,我知道有几个步骤要遵循,反映出我遗漏的关键关系。我希望有人能用一系列的步骤来解释如何创建一个视图对象,视图控制器,相关的.xib,然后把它加载到一个窗口中(在清除当前视图之后)。
我指的是在哪里声明和初始化的真正细节,需要导入的内容,所有东西。因为我正在翻阅我的每一本书,但我的弱智并不清楚。
谢谢!
发布于 2010-10-16 14:01:24
如何创建视图对象、视图控制器、关联的.xib,然后将其加载到窗口…中
这是几件事,其中一些是冲突的。
如果您在代码中创建视图,则不需要(也不应该)在nib中创建它,反之亦然。
如果您创建一个视图控制器来加载nib,那么您将在nib中创建视图,因此您绝对不应该在代码中创建相同的视图。
您不需要为大多数视图创建视图控制器。更常见的情况是,每个控制器只拥有一个窗口的全部。只有当您在单个窗口中管理复杂的视图层次结构时,才需要视图控制器(最有可能的情况是您将应用程序设置为单窗口)。
…(清除当前视图后)。
在Cocoa中没有“当前视图”。您可以有多个窗口,每个窗口都有一个您通常不会在运行时编辑的深层视图层次结构。在某种选项卡式UI之外将一个视图切换到另一个视图是非常不寻常的。
在代码中创建视图对象
向所需的视图类发送一条alloc消息,并向返回的视图发送一条initWithFrame:消息(除非该类的文档另有规定)。当然,您需要释放或自动释放此视图。
在笔尖中创建视图对象
给它自己的nib (特别是对于视图控制器)
在IB (新建)或Xcode (添加文件)中使用view-nib模板。如果您在Xcode中创建它,不要忘记获取有关它的信息并使其可本地化。如果您在IB中创建它,则应该将其保存到某个.lproj文件夹中;然后它就已经可以本地化了。
从这些模板创建的nib将包含一个空的NSView。您可以更改它的类和/或添加子视图,如下所述。
在现有的笔尖上制作
将“自定义视图”从库调色板拖到笔尖窗口中,然后在⌘6检查器上设置视图的类。
仅对nib中的顶级视图执行此操作。有关其子视图,请参见下面的内容。
将视图放入窗口的视图层次结构中
如果视图应该是窗口的视图层次结构的根(窗口的内容视图)
设置窗口的内容视图。
在IB中,您不能更改窗口的内容视图。相反,你需要改变它的一些东西--它的类、子视图等。没有理由尝试用IB中的另一个视图替换窗口的内容视图。
视图是否应为现有视图的子视图
在代码中实现此目的的方法是向superview发送一条addSubview:消息。
如果两个视图在同一个nib中,则在同一操作中创建子视图并将其添加到superview中。将“自定义视图”从库中拖到superview中,而不是nib窗口中,然后在⌘6检查器上设置子视图的类。
(如果您要自定义某个标准Apple视图,而不是创建一个完全原始的自定义视图,请从库中拖动您所基于的标准Apple视图,然后将其类更改为自定义子类。)
https://stackoverflow.com/questions/3947732
复制相似问题