我有一个状态项,并希望在用户点击它时执行多项操作。一些在线帮助和文档让我走到了这一步。
头文件包含:
- (IBAction)updateStatusItem:(id)sender;
类.m文件有:
[statusItem setAction:@selector(updateStatusItem:)];
我在applicationDidFinishLaunching和awakeFromNib中都尝试过它。
还有m文件:
-(IBAction)updateStatusItem:(id)sender{
NSLog(@"updateStatusItem worked");}
从我可以看到这是有道理的,但每当我点击状态项时,菜单就会正常下降并且消息不会被记录。我想也许我不得不在IB中以某种方式将它链接起来,但据我所知,IB中没有状态项的表示,它都是以编程方式完成的。我知道这可以做到,但它不适合我。你们中间有人能看错吗?
感谢您的帮助。
答案 0 :(得分:1)
要发送操作消息,您需要在某处发送消息。这意味着您还必须设置对象的target
,该对象是您要在其上调用操作选择器的对象:
[statusItem setAction:@selector(updateStatusItem:)];
[statusItem setTarget:yourController];
触发操作时,这将调用控制器对象的‑updateStatusItem:
方法。
但是,您不能拥有使用目标/操作的状态项,并且还有一个菜单。如果您的状态项有一个菜单,那么它将始终通过点击状态项触发,并且状态项的目标和操作将被忽略。