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:
方法
但是,您不能有使用目标/操作的状态项,也不能有菜单。如果您的状态项有一个菜单,那么它总是通过单击状态项来触发,并且状态项的目标和操作将被忽略。是的,这很有效。太糟糕了,我不能同时拥有菜单和动作。是的,这很有效。可惜我不能同时拥有菜单和动作。