objective-c - 如何在菜单栏中使用从 Nib 加载的自定义 NSView

标签 objective-c macos cocoa

首先,对于 Cocoa 和 Objective-C 来说是个新手,所以如果这不清楚并且我误用了所有术语,我深表歉意,欢迎指正。

我正在尝试编写一个非常简单的应用程序,其菜单栏中的内容令人不寒而栗。

我已经非常接近了,我可以在那里得到一个基本的文本菜单,但我真的很喜欢 在实际菜单部分有一个自定义 View ,如下所示: screenshot of where i want the custom view

当我发现 the example in this answer 时,我真的充满希望,我可以看到他使用自己的 View 对象将 setView 发送到他的 statusItem 的位置,但我想在 Interface Builder 中设计我的 View 。

我找到了this code我可以为我初始化的自定义设计的 View 对象设置一个实例变量(可能以一种非常糟糕的方式),但是当我尝试将该变量发送到 setView 时,什么也没有显示。

我读了很多关于 drawRect 的内容,我猜它与答案有关,但我的 Cocoa 还没有。

有人可以完整描述所有这些步骤吗?我觉得我有很多拼图,但我失去了盖子。

最佳答案

你不需要使用drawRect(除非你正在做你自己的自定义绘图)或设置框架,你可以在IB中完成。只需拖出一个自定义 View ,调整适当的大小,然后将您想要的任何内容放入其中即可。在连接到它的类之一中有一个 IBOutlet,并在创建状态栏项目后调用 setView: ,并使用自定义 View 的 IBOutlet 作为参数。状态栏只有 22 像素高,因此您的 View 需要考虑到这一点。相对于 IB 中的自动调整大小功能中的支柱,此状态项似乎有一些奇怪的行为。我注意到,如果顶部支柱或右侧支柱单独打开,则不会出现 View (但左侧或底部都可以)。它似乎也可以在所有 4 个功能开启或关闭的情况下工作。

关于objective-c - 如何在菜单栏中使用从 Nib 加载的自定义 NSView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9914740/

相关文章:

iPhone App 在创建 UIButton 时在 loadView 方法中崩溃

objective-c - 如何在 swift 中使用 USBmakebmRequestType

bash - 如何将 tar 解压到其原始目录

cocoa - 不可编辑的 NSTextView 可以使用 setAutomaticLinkDetectionEnabled 突出显示链接吗?

objective-c - 数据序列化

macos - Cocoa for OSX 上类似 Accordion 的文件夹?

ios - 有没有办法将 UIView 嵌入 UIScrollview 而不会丢失 iOS 中的 subview 约束?

iOS 修复 UITableViewController 顶部的搜索栏?

java - Eclipse Java OSX 崩溃 - 2013 年 5 月

iphone - 如何在不支付增值税的情况下购买(并激活!)Mac/iOS 开发者程序?