在NSMenuItem上设置标题,没有效果

时间:2012-03-24 14:14:37

标签: objective-c cocoa nsmenuitem nsmenu

我从NSMenuItem获得Main Menu,代码在此处:Getting NSMenuItem of NSMenu tree by title

然而,发生了一些奇怪的事情:

  • 与行为相关联的NSMenuItem:使用发件人时 属性(NSMenuItem)并设置标题,可行
  • BUT:获取上述功能的项目并设置标题时, 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

1 个答案:

答案 0 :(得分:1)

我会忘记的  通过标题代码获取NSMenu树的NSMenuItem,然后连接IB中的每个菜单。

然后在需要时使用 setTitle

UPDATE *

(见评论) 我花了一段时间才弄清楚为什么即使我的测试也没有工作!!我在IB中提出了一个归属标题。

enter image description here

所以当我后来使用 setTitle 时。该属性已设置,但实际显示的菜单被属性标题覆盖。

从IB中删除属性标题。修好了。并且 setTitle 按预期工作。

此外,我之前从未使用过属性标题。我只是在IB归属标题中粘贴了一些格式化的彩色文本。菜单项的颜色和字体相同。

我一直希望能够这样做,但是想不到。

以编程方式进行操作非常简单。

 NSMutableAttributedString * string = [[NSMutableAttributedString alloc] initWithString:@"newTestMenu"];
    [string addAttribute:NSForegroundColorAttributeName value:[NSColor redColor] range:NSMakeRange(0,string.length)];

    [_testMenu setAttributedTitle:string];