Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 单击状态项应开始操作,但不会';T_Objective C_Cocoa_Statusbar - Fatal编程技术网

Objective c 单击状态项应开始操作,但不会';T

Objective c 单击状态项应开始操作,但不会';T,objective-c,cocoa,statusbar,Objective C,Cocoa,Statusbar,我有一个状态项,希望在用户单击它时发生几个操作。一些在线帮助和文档让我走到了这一步 头文件包含以下内容: - (IBAction)updateStatusItem:(id)sender; class.m文件具有: [statusItem setAction:@selector(updateStatusItem:)]; 我在ApplicationIDFinishLaunching和awakeFromNib中都尝试过 并且在m文件中: -(IBAction)updateStatusIte

我有一个状态项,希望在用户单击它时发生几个操作。一些在线帮助和文档让我走到了这一步

头文件包含以下内容:

- (IBAction)updateStatusItem:(id)sender;
class.m文件具有:

    [statusItem setAction:@selector(updateStatusItem:)];
我在ApplicationIDFinishLaunching和awakeFromNib中都尝试过

并且在m文件中:

-(IBAction)updateStatusItem:(id)sender{
NSLog(@"updateStatusItem worked");}
从我看来,这是有道理的,但每当我点击状态项,菜单就会正常下降,消息不会被记录下来。我想也许我必须以某种方式在IB中链接它,但据我所知,IB中没有状态项的表示,它都是通过编程完成的。我知道这是可以做到的,但对我不起作用。你们谁能看出什么不对劲吗


谢谢您的帮助。

要发送操作消息,您需要有地方发送它。这意味着您还必须设置对象的
目标
,该对象是您要调用动作选择器的对象:

[statusItem setAction:@selector(updateStatusItem:)];
[statusItem setTarget:yourController];
触发该操作时,将调用控制器对象的
-updateStatusItem:
方法


但是,您不能有使用目标/操作的状态项,也不能有菜单。如果您的状态项有一个菜单,那么它总是通过单击状态项来触发,状态项的目标和操作将被忽略。

要发送操作消息,您需要有地方发送它。这意味着您还必须设置对象的
目标
,该对象是您要调用动作选择器的对象:

[statusItem setAction:@selector(updateStatusItem:)];
[statusItem setTarget:yourController];
触发该操作时,将调用控制器对象的
-updateStatusItem:
方法


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

是的,这很有效。太糟糕了,我不能同时拥有菜单和动作。是的,这很有效。可惜我不能同时拥有菜单和动作。