gpt4 book ai didi

macos - 创建一个具有类似 Xcode 界面的程序

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

在 Mac 上,通常有一个“隐藏”的主窗口。

通常的例子是“文本编辑”。当您打开文件时,您看不到“主框架”。相反,每个文件都将在其自己的“文本编辑”实例中打开。这是模拟所谓的 MDI 界面的 OSX 方式。

但是,有一个异常(exception)。如果您打开 Xcode 并在那里打开项目,您可以单击该文件,它将在主 Xcode 窗口中打开。如果双击该文件,它将在其自己的独立编辑器窗口中打开,并保持主 Xcode 窗口可见。

我的问题是:我是否需要做一些特殊的事情才能使我的程序表现得像 Xcode 一样?我应该对主框架使用不同的类,还是对打开文档事件做出不同的 react ?

任何在哪里查找甚至官方 Apple 文档的提示/指针都会有帮助。

最佳答案

您所描述的 TextEdit 行为更像是“SDI”而不是“MDI”,并且直到 Xerox 发明 SDI 类型接口(interface)很久之后 Microsoft 发明了 MDI 才需要术语“SDI”和“MDI” macOS 是其衍生产品。

无论如何,我认为你误解了 Xcode 的行为。您似乎认为“它自己的独立编辑器窗口”是与“Xcode 主窗口”不同类型的窗口。但实际上新窗口与旧窗口是一样的,只是隐藏了一些可选部分。您可以显示那些隐藏的部分,并使新窗口看起来与旧窗口完全相同。演示:

enter image description here

打开多个窗口显示同一文档(或者在 Xcode 中为项目)的能力是软件架构的问题。如果您仔细设计您的应用程序,以便多个窗口可以共享单个模型对象图,并且可以在对象图更改时收到通知并重新绘制自己,那么您就拥有了一个支持多个窗口显示同一文档的应用程序。如果您想要多种窗口显示同一个文档,Cocoa 不会妨碍您。事实上,Xcode确实至少有一种其他类型的窗口,可以在其中显示项目的一些属性:

project setting sheet

该项目设置表实际上是另一个窗口; macOS 将其附加到主窗口,但它实际上是 NSWindow 的实例(或 NSWindow 的子类),毫无疑问具有自己的引用的自定义窗口 Controller 与主窗口相同的项目对象。

如果您使用 Cocoa NSDocument 架构,则内置少量多窗口支持:NSDocument 了解其关联的窗口(通过其窗口 Controller )。如果你想使用 NSDocument 架构,你应该阅读 Document-Based App Programming Guide for Mac .

关于macos - 创建一个具有类似 Xcode 界面的程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43377468/

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