我有一个状态项,并希望在用户单击它时发生几个动作。一些在线帮助和文档帮助我走了这么远。
头文件如下:
- (IBAction)updateStatusItem:(id)sender;
类.m文件有:
[statusItem setAction:@selector(updateStatusItem:)];
我已经在applicationDidFinishLaunching和awakeFromNib中尝试过了。
还有在m文件中:
-(IBAction)updateStatusItem:(id)sender{
NSLog(@"updateStatusItem worked");}
从我可以看到这是有意义的,但每当我点击状态项,菜单只是正常下拉,消息不被记录。我想也许我必须以某种方式在IB中链接它,但据我所知,在IB中没有状态项的表示,这一切都是通过编程完成的。我知道这是可以做到的,但这对我不起作用。你们能看出什么不对劲吗?
谢谢你的帮助
对于要发送的操作消息,您需要有可以发送它的地方。这意味着您还必须设置对象的target
,该对象是您希望调用操作选择器的对象:
[statusItem setAction:@selector(updateStatusItem:)];
[statusItem setTarget:yourController];
当动作被触发时,这将调用控制器对象的‑updateStatusItem:
方法。
然而,你不能有一个使用目标/动作的状态项,它也有一个菜单。如果您的状态项有一个菜单,那么它将总是通过单击状态项来触发,并且状态项的目标和操作将被简单地忽略。