Двойные значки статуса появляются - PullRequest
1 голос
/ 07 июля 2011

Я пытаюсь сделать простое приложение только для строки меню на xcode 4. Все на самом деле работает, но я не понимаю, что значок появляется дважды в строке меню. Один из двух значков фактически работает и предоставляет раскрывающееся меню с рабочими кнопками, другой просто переключается на подсвеченные изображения значков при нажатии и возвращается обратно после отпускания, ничего не делая, даже не появляется раскрывающееся меню.

Это код, который я нашел и протестировал:

- (void) awakeFromNib{

//Create the NSStatusBar and set its length
statusItem = [[[NSStatusBar systemStatusBar] statusItemWithLength:NSSquareStatusItemLength] retain];

//Used to detect where the files are
NSBundle *bundle = [NSBundle mainBundle];

//Allocates and loads the images into the application which will be used for the NSStatusItem
statusImage = [[NSImage alloc] initWithContentsOfFile:[bundle pathForResource:@"icon" ofType:@"png"]];
statusHighlightImage = [[NSImage alloc] initWithContentsOfFile:[bundle pathForResource:@"icon-alt" ofType:@"png"]];

//Sets the images in the NSStatusItem
[statusItem setImage:statusImage];
[statusItem setAlternateImage:statusHighlightImage];

//Tells the NSStatusItem what menu to load
[statusItem setMenu:statusMenu];

//Sets the mouse over text
[statusItem setToolTip:@"My Custom Menu Item"];

//Enables highlighting
[statusItem setHighlightMode:YES];

затем отпустите изображения

- (void) dealloc {
//Releases the 2 images we loaded into memory
[statusImage release];
[statusHighlightImage release];
[super dealloc];

и заголовочный файл:

@interface MenuletApp : NSObject <NSApplicationDelegate> {
NSWindow *window;

IBOutlet NSMenu *statusMenu;

NSStatusItem *statusItem;
NSImage *statusImage;
NSImage *statusHighlightImage;

с IBAction для регистрации Hello World при нажатии одного из элементов и для завершения при нажатии другого элемента.

Я использовал учебник, предназначенный для XCode 3, поэтому может случиться так, что один из шагов сделан по-другому, но, глядя на код, я понятия не имею, где создается второй элемент статуса.

Спасибо за помощь.

1 Ответ

3 голосов
/ 07 июля 2011

Возможно ли, что -awakeFromNib вызывается дважды?(Попробуйте поместить туда лог-сообщение).Возможно, у вас есть два объекта этого класса в вашем xib-файле?

Кроме того, я бы рекомендовал переместить это в -applicationDidFinishLaunching:.

...