objective-c - 如何覆盖 NSWindow?

标签 objective-c macos cocoa interface-builder

我需要创建一个自定义窗口,因此我创建了 NSWindow 的子类。我重写了构造函数和许多其他函数。

我需要用我创建的窗口子类替换当前窗口。我知道它与 Interface Builder 有关,但不知道该怎么做。我该怎么做?

我尝试从检查器中删除 NSWindow,并添加我的自定义窗口,但这只会导致在运行时不显示任何窗口。

我还编辑了应用程序的委托(delegate),将 NSWindow 更改为我的自定义窗口,并将委托(delegate)的“主”导出更改为我的自定义窗口。

我在 Mac OSX Snowleopard 上使用 Xcode 3.2.6

最佳答案

首先,您需要确保 Interface Builder 了解您的自定义类。为此,请打开您的 xib 文件并转到“文件->读取类文件...”,然后选择您的头文件。

enter image description here

然后,选择要更改的窗口并打开检查器。在检查器的最后一个选项卡中的“类标识”下,有一个标记为“类”的文本字段,只需在此处输入类的名称即可。

enter image description here

执行此操作后,您的自定义类将用作该窗口的类。它看起来像 IB 中的普通窗口,但允许您使用自定义 socket 和操作,并在您实际运行项目时使用您的类。

关于objective-c - 如何覆盖 NSWindow?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9119148/

相关文章:

objective-c - Podspec - 链接本地框架

ios - 使用 iPhone 作为带蓝牙的键盘楔

objective-c - 替换 NSString 中的字符

macos - 写入 MAC 的串行端口以与 Arduino 通信(fopen(/dev/tty.usbmodem1431)永远挂起)

ios - 通过点击 View 打开文本文件

ios - 如何在 Swift 中获取任意数组的字节大小?

java - 是否有可能从 Android/Java 或 iPhone/objective-C 的代码中获取变量名称以进行调试

ios - 如何在不使用 SpriteKit 中的 Action 的情况下更改节点的位置?

macos - 在 Mac 中重命名没有突出显示扩展名的文件名

objective-c - 我应该保留 NSCalendar 对象以供持久使用吗?