在我的应用主菜单中设置项目标题?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在我的应用主菜单中设置项目标题?相关的知识,希望对你有一定的参考价值。

我正在尝试更改Cocoa应用程序主菜单中某些项目的标题。我已尝试在IB中设置它们,也可以从我的应用程序的applicationDidFinishLaunchingWithOptions:方法中进行编程。无论哪种方式,我的NSMenuItem对象的title属性确实发生了变化。但是,当应用程序运行时,我的更改都不会反映在屏幕顶部项目的实际标题中。

谁能解释一下发生了什么?我怎么能改变这个?

编辑:数据结构是IB设置的默认结构:

NSApplication *app = [NSApplication sharedApplication];
NSMenu *mainMenu = [app mainMenu];
NSArray *itemArray = [mainMenu itemArray];
NSMenuItem *firstItem = [itemArray objectAtIndex: 0];
NSMenu *submenu = [firstItem submenu];

我已将firstItem和subMenu的title属性更改为我想要的标题。然而,默认的仍然显示。

答案

而不是从$ {PRODUCT_NAME}重新命名您的-application-Info.plist中的项目更改“Bundle name”;无论你想要什么;此更改将反映在主菜单的“应用程序”菜单项的标题中。

另一答案

有时,这只是行不通,因为Cocoa不喜欢你的头衔:-p当您选择的标题是本地化的应用程序名称时,它希望显示非本地化的应用程序名称。一个小技巧可以帮助......

NSMenu *menu = [[[NSApp mainMenu] itemAtIndex:0] submenu];
NSString *title = @"My app name";

// Append some invisible character to title :)
title = [title stringByAppendingString:@"x1b"];

[menu setTitle:title];

是的,这很疯狂,但最后这个额外的角色完全不同。 (你也可以只添加一个空格,但随后菜单项会增长,这可能不是你想要的。)

在OS X 10.9.5上测试过。

另一件事:

在显示窗口后,您必须完成所有这些操作。否则它就行不通。此外,如果您在应用程序启动时执行此过程,然后在显示窗口后再执行此操作,则它可能也不起作用。

另一答案

重命名项目就做到了。但是看起来太极端了。我仍然会对一个不太极端的解决方案感兴趣。

以上是关于在我的应用主菜单中设置项目标题?的主要内容,如果未能解决你的问题,请参考以下文章

如何首先在实体框架代码中设置身份主键的起始值?

如何在android的片段中设置应用程序上下文?

如何在不破坏“菜单”按钮默认行为的情况下在 tvOS 游戏中设置主菜单

GraphQL:我需要在我的项目中设置啥?

我想在我的应用中设置本地通知

如何在Android的BottomNavigationView中设置填充项