別のウィンドウでボタンをクリックして開きたい NSWindow xib ファイルを作成しました。
ここで、NSWindow の動作を制御するために、xib の Library からオブジェクトをドラッグし、XCode で定義した NSWindowController (つまり ListingWindowController) のサブクラスに変更しました。
同様に、NSWindow 内の NSView を管理するために、NSViewController のサブクラス (つまり、ListingViewController) も作成しました。これを行うために、xib の Library から NSViewController をドラッグし、そのクラスを ListingViewController に変更しました。
@class ListingViewController;
@interface ListingWindowController : NSWindowController {
IBOutlet ListingViewController *listingVC;
}
@property (nonatomic, retain) IBOutlet ListingViewController *listingVC;
@end
IBでウィンドウコントローラーのウィンドウとlistingVCを接続しました。
起動 (最初の) ウィンドウでボタンをクリックしてこのウィンドウを呼び出すには、次のように initWithWindowNibName を使用してウィンドウ コントローラーを作成します。
- (IBAction) pushConnect:(id)sender {
NSLog(@"Connect pushed.");
if (wc == nil) {
wc = [[ListingWindowController alloc] initWithWindowNibName:@"ListingWindow" owner:self];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(closeWindow:) name:NSWindowWillCloseNotification object:nil];
[wc showWindow:sender];
}
}
問題は、今後のウィンドウ/ビューのビュー コントローラーに対して IB ですべてのバインドが行われているにもかかわらず、新しいウィンドウが読み込まれた後でも、ウィンドウとリスティング VC が (null)、(null) になることです (コードの下)。
- (void)windowDidLoad {
[super windowDidLoad];
NSLog(@"windowDidLoad = %@, %@", self.window, self.listingVC);
}
接続が機能しない理由を教えてください。私はかなり長い間、この問題に頭を悩ませています。
PS: 私は iOS プログラミングのバックグラウンドを持っています。したがって、Mac のウィンドウ/ビュー コントローラーは iOS の UIViewController と同様に動作すると想定しています。
ティア..