我有一个状态项目,希望用户单击它时发生一些动作。到目前为止,一些在线帮助和文档已经使我明白了。
头文件具有以下内容:
- (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:
方法。但是,您不能拥有使用目标/操作并且还具有菜单的状态项。如果您的状态项具有菜单,则始终会通过单击状态项来触发它,并且状态项的目标和操作将被忽略。