在我的应用主菜单中设置项目标题?
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上测试过。
另一件事:
在显示窗口后,您必须完成所有这些操作。否则它就行不通。此外,如果您在应用程序启动时执行此过程,然后在显示窗口后再执行此操作,则它可能也不起作用。
重命名项目就做到了。但是看起来太极端了。我仍然会对一个不太极端的解决方案感兴趣。
以上是关于在我的应用主菜单中设置项目标题?的主要内容,如果未能解决你的问题,请参考以下文章