gpt4 book ai didi

cocoa - NSView 高级概述?

转载 作者:行者123 更新时间:2023-12-03 17:16:59 24 4
gpt4 key购买 nike

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

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

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

谢谢!

最佳答案

how one creates a view object, view controller, associated .xib, and then loads it into a window …

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

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

如果您创建一个 View Controller 来加载 Nib ,您将在 Nib 中创建 View ,因此您绝对不应该在代码中创建相同的 View 。

您不需要为大多数 View 创建 View Controller 。更常见的是让每个 Controller 只拥有一个窗口的全部。唯一需要 View Controller 的时候是当您在单个窗口中管理复杂的 View 层次结构时(最有可能的是,如果您使应用程序成为单窗口)。

… (after clearing the current view).

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

在代码中创建 View 对象

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

在 Nib 中创建 View 对象

给它自己的 Nib (特别是对于 View Controller )

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

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

在现有 Nib 中制作

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

您只能对 Nib 中的顶级 View 执行此操作。有关其 subview ,请参见下文。

将 View 放入窗口的 View 层次结构

View 是否应该是窗口 View 层次结构的根(窗口的内容 View )

设置窗口的内容 View 。

在 IB 中,您无法更改窗口的内容 View 。相反,您可以更改有关它的内容 - 它的类、 subview 等。没有理由尝试用 IB 中的另一个 View 替换窗口的内容 View 。

View 是否应该是现有 View 的 subview

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

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

(如果您要自定义标准 Apple View 之一,而不是制作完全原始的自定义 View ,请从库中拖动基于您的标准 Apple View ,然后将其类更改为您自定义的子类。)

关于cocoa - NSView 高级概述?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3947732/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com