次のようにして、作成したインスタンスstrong
への参照を作成する必要があります。NSWindowController
.h:
@class MDWindowController;
@interface MDAppDelegate : NSObject <NSApplicationDelegate> {
__weak IBOutlet NSWindow *window;
MDWindowController *windowController;
}
@property (weak) IBOutlet NSWindow *window;
@property (strong) MDWindowController *windowController;
- (IBAction)showSecondWindow:(id)sender;
@end
.m:
#import "MDAppDelegate.h"
#import "MDWindowController.h"
@implementation MDAppDelegate
@synthesize window;
@synthesize windowController;
- (IBAction)showSecondWindow:(id)sender {
if (windowController == nil) windowController =
[[MDWindowController alloc] init];
[windowController showWindow:nil];
}
@end
makeKeyAndOrderFront:
メソッドを の に直接送信するNSWindowController
のではなく、の組み込みメソッドをそのままNSWindow
使用できることに注意してください。NSWindowController
showWindow:
上記のコード (および以下のサンプル プロジェクト) では のカスタム サブクラスをNSWindowController
使用していますが、ジェネリックも使用して を使用NSWindowController
してインスタンスを作成しますinitWithWindowNibName:
(nib ファイルのファイルの所有者が のNSWindowController
ようなカスタム サブクラスではなくに設定されていることを確認してMDWindowController
ください)。
サンプル プロジェクト:
http://www.markdouma.com/developer/MDWindowController.zip