установить названия пунктов в главном меню моего приложения? - PullRequest
5 голосов
/ 11 февраля 2011

Я пытаюсь изменить названия некоторых пунктов в главном меню моего приложения Какао. Я попытался установить их как внутри IB, так и программно из метода applicationDidFinishLaunchingWithOptions: моего приложения. В любом случае, свойство title моего объекта NSMenuItem изменяется. Но ни одно из моих изменений не отражено в фактическом названии элемента в верхней части экрана при запуске приложения.

Кто-нибудь может объяснить, что происходит? И как я могу это изменить?

РЕДАКТИРОВАТЬ: структура данных по умолчанию, которую IB устанавливает:

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

Я изменил свойства заголовка firstItem и subMenu, чтобы они стали моим желаемым заголовком. Тем не менее, по умолчанию все еще показывает.

Ответы [ 3 ]

6 голосов
/ 27 февраля 2012

Вместо переименования проекта измените «Имя пакета» в your-application-Info.plist из $ {PRODUCT_NAME}; к тому, что вы хотите; это изменение будет отражено в заголовке пункта меню приложения главного меню.

4 голосов
/ 27 ноября 2014

Иногда это просто не работает, потому что Какао не нравится ваш заголовок :-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.

Другое дело:

Вы должны сделать все это ПОСЛЕ того, как вы показали окно. В противном случае это просто не работает. Более того, если вы выполните эту процедуру при запуске приложения, а затем, когда появится окно, выполните это снова, это может не сработать.

0 голосов
/ 12 февраля 2011

Переименование проекта сделало это. Кажется, слишком экстремальным. Я все еще был бы заинтересован в менее экстремальном решении.

...