2016-03-21 10 views
1

私はOSXアプリケーション開発には新しく、ステータスバーアプリケーションを作りたいと思っています。Cocoa-私のstatusItemを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 

(ここで私は私がstoryboardを使用して代わりにnibだとき、私はawakeFromNibメソッドを使用する必要があるかどうかわからない。)

しかし、私はいくつかのデモコードを読んだとき、私はそのI見つかりましたApplicationDelegateクラスでそれを行う必要があります。

なぜですか?私はそれがの一部であると思っています。私はMVCのルールに従い、を見ています。

答えて

1

NSStatusItemは、ウィンドウまたはビューとは関係ありません。ビューが添付されていなくてもNSStatusBarに保持できます。

したがって、NSStatusItemをApplicationDelegateクラスで作成して初期化することをお勧めします。

関連する問題