【问题标题】:Clicking on status item should start action but doesn't单击状态项应该开始操作,但不会
【发布时间】:2011-07-11 07:35:58
【问题描述】:

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

头文件有这个:

- (IBAction)updateStatusItem:(id)sender;

.m 类文件有:

    [statusItem setAction:@selector(updateStatusItem:)];

我在 applicationDidFinishLaunching 和 awakeFromNib 中都试过了。

还有在m文件中:

-(IBAction)updateStatusItem:(id)sender{
NSLog(@"updateStatusItem worked");}

据我所知,这是有道理的,但是每当我单击状态项时,菜单就会正常下拉,并且不会记录消息。我想也许我必须在 IB 中以某种方式链接它,但据我所知,IB 中没有状态项的表示,这一切都是以编程方式完成的。我知道这可以做到,但它不适合我。你们有没有发现哪里不对劲?

感谢您的帮助。

【问题讨论】:

    标签: objective-c cocoa statusbar


    【解决方案1】:

    要发送操作消息,您需要有一个地方可以发送它。这意味着您还必须设置对象的target,这是您要在其上调用动作选择器的对象:

    [statusItem setAction:@selector(updateStatusItem:)];
    [statusItem setTarget:yourController];
    

    当动作被触发时,这将调用你的控制器对象的‑updateStatusItem:方法。

    但是,您不能拥有使用目标/操作并且还具有菜单的状态项。如果你的状态项有一个菜单,那么它总是会被点击状态项触发,而状态项的目标和动作会被简单地忽略。

    【讨论】:

    • 是的,这行得通。太糟糕了,我不能同时拥有菜单和动作。
    猜你喜欢
    • 1970-01-01
    • 2018-08-04
    • 1970-01-01
    • 2013-07-26
    • 2015-02-16
    • 2016-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多