单击状态项应该开始操作但不是

时间:2011-07-10 22:17:09

标签: objective-c cocoa statusbar

我有一个状态项,并希望在用户点击它时执行多项操作。一些在线帮助和文档让我走到了这一步。

头文件包含:

- (IBAction)updateStatusItem:(id)sender;

类.m文件有:

    [statusItem setAction:@selector(updateStatusItem:)];

我在applicationDidFinishLaunching和awakeFromNib中都尝试过它。

还有m文件:

-(IBAction)updateStatusItem:(id)sender{
NSLog(@"updateStatusItem worked");}

从我可以看到这是有道理的,但每当我点击状态项时,菜单就会正常下降并且消息不会被记录。我想也许我不得不在IB中以某种方式将它链接起来,但据我所知,IB中没有状态项的表示,它都是以编程方式完成的。我知道这可以做到,但它不适合我。你们中间有人能看错吗?

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

要发送操作消息,您需要在某处发送消息。这意味着您还必须设置对象的target,该对象是您要在其上调用操作选择器的对象:

[statusItem setAction:@selector(updateStatusItem:)];
[statusItem setTarget:yourController];

触发操作时,这将调用控制器对象的‑updateStatusItem:方法。

但是,您不能拥有使用目标/操作的状态项,并且还有一个菜单。如果您的状态项有一个菜单,那么它将始终通过点击状态项触发,并且状态项的目标和操作将被忽略。