- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的项目是基于文档的,只有将加载状态菜单的代码放在awakeFromNib下才会执行。
#import "StatusMenuAppDelegate.h"
@implementation StatusMenuAppDelegate
@synthesize window = _window;
-(void)awakeFromNib {
myStatusItem = [[[NSStatusBar systemStatusBar] statusItemWithLength:NSSquareStatusItemLength] retain];
statusImage = [NSImage imageNamed:@"statusNorm.png"];
[myStatusItem setImage:statusImage];
[myStatusItem setHighlightMode:YES];
[myStatusItem setMenu:myStatusMenu];
}
@end
但是,在我的测试项目(非基于文档)中,代码在 applicationDidFinishLaunching 中执行得很好。为什么?难道我不想在状态菜单中使用此功能吗?
最佳答案
applicationDidFinishLaunching:
消息由应用程序对象发送至其委托(delegate)。它不会发送到任何其他对象。
您当然可以在文档对象中响应该消息,但他们永远不会收到它,因为没有任何东西发送给他们。这就是为什么您在文档对象或非应用程序委托(delegate)的任何其他对象中的该方法中执行的任何操作都不会发生。
awakeFromNib
是您可以创建状态项的地方。我可能会在 windowControllerDidLoadNib:
中执行此操作。
这是假设您确实希望每个文档都有一个状态项,这可能没有意义。如果这不是您想要的,您应该将状态项的创建、所有权和管理移至单例对象,该对象应该由应用程序的委托(delegate)创建(可能在 applicationDidFinishLaunching:
内),并且具有任何所有文档都根据需要与该对象进行交互。
关于cocoa - 启动 systemStatusBar 在 applicationDidFinishLaunching 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8527737/
我正在尝试在单击 NSStatusItem 时接收事件(执行操作)。然而,这是我在控制台中看到的(应用程序没有崩溃)- unrecognized selector sent to instance 2
我的项目是基于文档的,只有将加载状态菜单的代码放在awakeFromNib下才会执行。 #import "StatusMenuAppDelegate.h" @implementation Status
我正在尝试仅使用代码在系统状态栏中创建一个简单的菜单。我没有收到任何编译或运行时错误,但我看不到任何效果。 - (void)awakeFromNib { NSMenu *stackMenu =
我正在尝试在系统状态栏中显示 OS X 应用程序 statusItem,除了标题被截断之外,一切都成功。我正在初始化一切,如下所示: let statusItem = NSStatusBar.syst
我是一名优秀的程序员,十分优秀!