【问题标题】:Place information in Mac Menu Bar Item在 Mac 菜单栏项中放置信息
【发布时间】:2010-08-17 16:04:13
【问题描述】:

我希望这不是太笼统。我是初学者,我正在尝试学习如何在 Objective-C 中为 Mac 制作状态栏(右侧菜单)。

我已经设法创建了基本大纲,但我不知道用于特定操作的方法是什么:我希望在出现下拉菜单时调用一个返回字符串的方法显示出来。

换句话说,我如何让菜单调用一个方法并显示它的返回值。

请在可可中。

谢谢!

【问题讨论】:

  • 状态栏实际上是菜单栏中那些东西所在的部分,所以你不能创建一个,因为总是有一个。您要创建的内容称为状态项。

标签: objective-c cocoa macos


【解决方案1】:

您创建了一个 IBAction 方法。 Interface Builder 中的类的控制器可以看到任何这样标记的方法。因此,如果您将这样的方法放在您的应用控制器类中,那么在界面构建器中您将在您的应用控制器对象中看到该方法。现在您可以在 IB 中看到它,您可以通过从菜单项到控制器的控制拖动将该方法连接到菜单项。 ibaction 方法有一个名为“sender”的参数,它是消息的发送者。因此,如果您将方法与菜单项挂钩,那么发送者将是 NSMenuItem,因为这是调用该方法的对象。 NSMenuItem 响应“setTitle:”方法,您可以使用它来更改标题。所以这样的事情会起作用......

在“.h”文件中

-(IBAction)displayMenuItemtitle:(id)sender;

在“.m”文件中

-(IBAction)displayMenuItemtitle:(id)sender {
NSString* newTitle = @"my new title";
[sender setTitle:newTitle];
}

编辑: 重新阅读您的问题后,您可能希望 NSMenu 对象在菜单即将打开时显示新标题。 NSMenu 有一个委托方法 menuWillOpen:。因此,将您的应用控制器设置为 NSMenu 的代表。然后在你的 appcontroller 类中使用这个...

- (void)menuWillOpen:(NSMenu *)menu {
NSArray* menuItems = [menu itemArray];
NSMenuItem* theMenuItem = [menuItems objectAtIndex:0];
NSString* newTitle = @"my new title";
[theMenuItem setTitle:newtitle];
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-28
    • 2020-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多