2016-03-21 2 views
1

Я новичок в разработке приложений OSX, и я хочу создать приложение для строки состояния.Какао-Почему я должен помещать свой статус в приложение ApplicationDelegate?

Чтобы показать NSStatusItem в моей строке состояния, я сначала положил свой statusBar в ViewController. Это сработало.

//ApplicationDelegate.h 
#import <Cocoa/Cocoa.h> 

@interface AppDelegate : NSObject <NSApplicationDelegate> 

@property (strong, nonatomic) NSStatusItem *statusBar; 

@end 

.

//ApplicationDelegate.m 
#import "AppDelegate.h" 

@interface AppDelegate() 

@end 

@implementation AppDelegate 


- (void)applicationDidFinishLaunching:(NSNotification *)aNotification { 
    // Insert code here to initialize your application 
} 

- (void)applicationWillTerminate:(NSNotification *)aNotification { 
    // Insert code here to tear down your application 
} 

-(void)awakeFromNib{ 
    self.statusBar = [[NSStatusBar systemStatusBar] statusItemWithLength:NSVariableStatusItemLength]; 

    self.statusBar.title = @"T"; 


    self.statusBar.highlightMode = YES; 

} 
@end 

(здесь я не уверен, должен ли я использовать awakeFromNib метод, когда я использую storyboard вместо nib.)

Однако, когда я прочитал некоторые демо-код, я обнаружил, что я должен сделать это в классе ApplicationDelegate.

Почему? Я думаю, что это часть моего VIEW, поскольку я следую правилу MVC.

ответ

1

NSStatusItem не имеет отношения к окну или к любому виду. Он может оставаться в NSStatusBar, даже если нет прикрепленного изображения.

Поэтому рекомендуется создавать и запускать NSStatusItem в классе ApplicationDelegate.

Смежные вопросы