ヒレガス本 第6章 nibファイルとNSWindowController(2)
演習問題2でNSBundleを用いて明示的にパネルをロードするというところで詰まっていたが、わかってみれば単純。
まずAppController.hに、Aboutパネル用のインスタンス変数と表示用のメソッドを追加する。
#import <Cocoa/Cocoa.h> @class PreferenceController; @interface AppController : NSObject { PreferenceController *preferenceController; NSWindowController *aboutWindowController; } - (IBAction)showPreferencePanel: (id)sender; - (IBAction)showAboutPanel: (id)sender; @end
表示用メソッドはこんな感じ。
- (IBAction)showAboutPanel: (id)sender { if (!aboutWindowController) { aboutWindowController = [[NSWindowController alloc] init]; [NSBundle loadNibNamed: @"About" owner: aboutWindowController]; } [aboutWindowController showWindow: self]; [[aboutWindowController window] makeKeyAndOrderFront: self]; }
明示的とはいえ、ownerとなるNSWindowControllerがいずれにしても必要というところに気付けばあとは簡単。