gpt4 book ai didi

objective-c - 将信息放置在 Mac 菜单栏项目中

转载 作者:行者123 更新时间:2023-12-03 17:44:31 28 4
gpt4 key购买 nike

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

我已经成功创建了基本轮廓,但我不知道用于特定操作的方法:我希望当下拉菜单出现时调用一个将返回字符串的方法待显示。

也就是说,如何让菜单调用一个方法并显示它的返回值。

请加入 cocoa 。

谢谢!

最佳答案

您创建一个 IBAction 方法。 Interface Builder 中类的 Controller 将看到任何标记为此类的方法。因此,如果您将这样的方法放入应用程序 Controller 类中,那么在界面生成器中您将在应用程序 Controller 对象中看到该方法。现在您可以在 IB 中看到它,您可以通过按住 Control 键从菜单项拖动到 Controller 来将该方法连接到菜单项。 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 有一个委托(delegate)方法 menuWillOpen:。因此,将您的应用程序 Controller 设置为 NSMenu 的委托(delegate)。然后在你的应用程序 Controller 类中使用这个...

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

关于objective-c - 将信息放置在 Mac 菜单栏项目中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3504516/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com