Xcode 4.6.2 を使用した単純な cocoa coredata ステータスバー アプリケーションがあります。これは状況です:
に名前を変更MainMenu.xib
しPreferencesWindow.xib
、メインメニューを削除し、ウィンドウ内の配列コントローラーとバインディングを使用して、シンプルで機能するコアデータ関数を作成しました。新しいファイル -> ユーザー インターフェイス -> メイン メニューを作成し、名前を付けましたStatusBarMenu.xib
。シンプルなメニューを追加し、メイン メニューを削除しました。新しい file->objective-c class->subclass を作成NSObject
し、名前を付けましたStatusBarController
。インターフェイスのコードは次のとおりです。
@property IBOutlet NSMenu *statusMenu;
@property NSStatusItem *statusItem;
@property [some items for statusbar image]
実装:
@synthesize [everything]
-(void)awakeFromNib{
statusItem = [[NSStatusBar systemStatusBar]statusItemWithLength:NSVariableStatusItemLength];
[some string, path and stuff for the images]
statusItem.menu = statusMenu;
statusItem.toolTip = @"";
statusItem.highlightMode = YES;
}
次に、別の新しいファイルを作成しました->objective-c クラス->NSWindowController のサブクラス、PreferencesWindowController という名前を付けて、そのままにしておきます。次に、PreferencesAppController という名前の新しいファイル -> objective-c クラス -> NSObjects のサブクラス。.h のコードは次のとおりです。
@property (assign) IBOutlet NSWindow *mainWindow;
@property (retain) PreferencesWindowController *prefController;
-(IBAction)showPreferences:(id)sender;
.m コード:
@synthesize [everything];
-(IBAction)showPreferences:(id)sender{
if(!self.prefController)
self.prefController = [[PreferencesWindowController alloc] initWithWindowNibName:@"PreferencesWindow"];
[self.prefController showWindow:sender];
}
ファイルにはAppDelegate
コアデータのコードのみがあり、何も追加されていません。次に、いくつかのバインディングPreferencesWindow.xib
を追加しましたNSObject
(青い立方体) PreferencesAppController
: Outlets-> mainWindow は、単純な coredata 関数を使用してウィンドウにバインドされています。AppDelegate
同じウィンドウにバインドされたウィンドウ アウトレットを持ち、参照アウトレット -> ファイルの所有者デリゲート、いくつかsaveaction
のmanagedobjectcontext
. StatusBarMenu.xib
オブジェクトを作成してメニューにStatusBarController
バインドしました ( ) で、メニュー項目にバインドされたReceived でoutlets->statusMenu
呼び出される別の青いオブジェクトを作成しました。PreferencesAppController
Actions->showPreferences
次に、プログラムを実行すると、すべてがうまくいきます。アイコンがステータスバーに表示され、ドロップダウンメニューが機能し、「設定...」をクリックすると設定ウィンドウが表示されますが...フォーカスされていません! 他のウィンドウの上にありますが、クリックしてフォーカスを合わせる必要があります。コアデータの保存機能は、ボタンで手動で保存する必要があることを除いて正常に機能します。ステータスバー メニューからアプリケーションを終了しても保存されませんが、これはわずかな問題です。
ウィンドウがフォーカスされていないのはなぜですか?