我从NSMenuItem
获得Main Menu
,代码在此处:Getting NSMenuItem of NSMenu tree by title
然而,发生了一些奇怪的事情:
NSMenuItem
:使用发件人时
属性(NSMenuItem
)并设置标题,可行。 我做错了什么? (我确定这个真的很蠢......)
NSMenuItem* mi = [[core mainMenu] getItemWithPath:@"View" tag:PP_MENU_TAG_STATUSBAR];
[mi setTitle:@"newTitle"];
NSLog(@"mi : %@",[mi title]);
// mi changes, but no changes take effect in the mainMenu
答案 0 :(得分:1)
我会忘记的 通过标题代码获取NSMenu树的NSMenuItem,然后连接IB中的每个菜单。
然后在需要时使用 setTitle
UPDATE *
(见评论) 我花了一段时间才弄清楚为什么即使我的测试也没有工作!!我在IB中提出了一个归属标题。
所以当我后来使用 setTitle 时。该属性已设置,但实际显示的菜单被属性标题覆盖。
从IB中删除属性标题。修好了。并且 setTitle 按预期工作。
此外,我之前从未使用过属性标题。我只是在IB归属标题中粘贴了一些格式化的彩色文本。菜单项的颜色和字体相同。
我一直希望能够这样做,但是想不到。
以编程方式进行操作非常简单。
NSMutableAttributedString * string = [[NSMutableAttributedString alloc] initWithString:@"newTestMenu"];
[string addAttribute:NSForegroundColorAttributeName value:[NSColor redColor] range:NSMakeRange(0,string.length)];
[_testMenu setAttributedTitle:string];