2012-03-24 7 views
0

Ich bin ein NSMenuItem vom Main Menu bekommen, mit dem Code hier: Getting NSMenuItem of NSMenu tree by titleEinstellung Titel auf NSMenuItem, ohne Wirkung

jedoch geschieht etwas Seltsames:

  • Ein NSMenuItem mit einer Aktion verbunden: Wenn mit dem Absender Eigenschaft (NSMenuItem) und die Einstellung des Titels, funktioniert es.
  • ABER: Wenn das Element mit der Funktion oben bekommen und stellen Sie den Titel, der NSMenuItem Titel ändert sich, aber die Änderung ist nicht im Menü reflektiert es gehört.

Was mache ich falsch? (Ich bin sicher, dass dies eine wirklich dumm ist ...)

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 

Antwort

1

ich die NSMenuItem von NSMenu Baum Erste vergessen würde nach Titel Code und nur jedes Menü in IB verbinden.

Dann nutzen Sie den setTitle auf es, wenn

UPDATE *

(siehe Kommentare) benötigte Ich brauchte eine Weile, um herauszufinden, warum auch eine meine Test nicht funktioniert !!. Ich hatte in IB einen zugeschriebenen Titel eingetragen.

enter image description here

Also, wenn ich später verwendet setTitle. Die Eigenschaft wurde festgelegt, aber das tatsächlich angezeigte Menü wurde durch den zugewiesenen Titel überschrieben.

Entfernen des attributierten Titels von IB. behoben. Und setTitle funktioniert wie erwartet.

Auch ich habe nie zuvor zugeschriebenen Titel verwendet. Und ich habe einfach einen formatierten farbigen Text in den IB-Titel eingefügt. Und der Menüpunkt war in Farbe und Schriftart gleich.

Was ich schon immer tun wollte, dachte aber nicht.

Und programmgesteuert ist es einfach.

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

    [_testMenu setAttributedTitle:string]; 
+0

Dies funktioniert (nehme ich an); aber was ist mit dem oben genannten? Was mache ich falsch? –

+0

Was ist das Tag: PP_MENU_TAG_STATUSBAR] Teil ?. Sie haben das nicht im Methodennamen! – markhunte

+0

Nun, ok ... Ich gebe es zu - für einen bestimmten Sub-Subcase musste ich einen Tag für einen der Menüpunkte deklarieren ... also habe ich eine passende Funktion ('getItemWithPath: tag:' - so ziemlich die genauso wie der andere) + definiere 'PP_MENU_TAG_STATUSBAR' (= 1)). Pffff ... Es wird wirklich zu komplex ... Ich habe angefangen zu denken, dass ich es auf deine Art machen soll ... –