2013-02-24 4 views
10

タイトルのように、[myWindowController showWindow:nil]は機能しません。ここにあなたが知っておく必要があるかもしれないいくつかの事実です:NSWindowController showWindow:何もしません。

  • マイウィンドウコントローラ:KRAuthenticationWindowController
  • インターフェイスビルダーファイル:AuthenticationWindow.xib
  • ファイルの所有者は、KRAuthenticationWindowController
  • windowコンセントが窓
  • ウィンドウのに接続されていますdelegateはファイルの所有者に接続されています
  • ウィンドウのVisible at launchはオフになっています
  • ウィンドウのRelease when closedもチェックされて

私のコードは以下の通りである:

// KRApplicationDelegate.m 

- (void)applicationDidFinishLaunching:(NSNotification *)notification { 
    NSLog(@"%s",__PRETTY_FUNCTION__); 
    KRAuthenticationWindowController *authWindowController = [[KRAuthenticationWindowController alloc] init]; 
    [authWindowController showWindow:nil]; 
    [[authWindowController window] makeKeyAndOrderFront:nil]; 
} 

// KRAuthenticationWindowController.m 

- (id)init { 
    self = [super initWithWindowNibName:@"AuthenticationWindow"]; 
    if(!self) return nil; 
    NSLog(@"%s",__PRETTY_FUNCTION__); 
    return self; 
} 

- (void)loadWindow { 
    [super loadWindow]; 
    [self.window setBackgroundColor:[NSColor colorWithDeviceWhite:0.73 alpha:1]]; 
    NSLog(@"%s",__PRETTY_FUNCTION__); 
} 

- (void)windowDidLoad { 
    [super windowDidLoad]; 
    NSLog(@"%s",__PRETTY_FUNCTION__); 
} 

- (void)showWindow:(id)sender { 
    [super showWindow:sender]; 
    NSLog(@"%@",self.window); 
    NSLog(@"%s",__PRETTY_FUNCTION__); 
} 

マイコンソール出力:

2013-02-24 16:21:45.420 Application[3105:303] -[KRApplicationDelegate applicationDidFinishLaunching:] 
2013-02-24 16:21:45.421 Application[3105:303] -[KRAuthenticationWindowController init] 
2013-02-24 16:21:45.428 Application[3105:303] -[KRAuthenticationWindowController loadWindow] 
2013-02-24 16:21:45.428 Application[3105:303] -[KRAuthenticationWindowController windowDidLoad] 
2013-02-24 16:21:45.556 Application[3105:303] <NSWindow: 0x10016e860> 
2013-02-24 16:21:45.556 Application[3105:303] -[KRAuthenticationWindowController showWindow:] 

私はちょうど重要な何かが欠けていると思います。どんな助けもありがとう。

+0

おそらく、この質問に記載されている問題があります。http://stackoverflow.com/questions/3539721/nswindowcontroller-loadwindow-loads-window-from-nib-but-showwindow-does-nothin – sergeyne

+0

いいえ、そうではありません。 – akashivskyy

答えて

31

authWindowControllerをインスタンス変数に変換してみてください。現在、ローカル変数です。ローカル変数がなくなると、ウィンドウコントローラが解放され、ウィンドウが表示されることがあります。したがって、表示されることはありません。

+1

これはARCを使用している場合に発生する可能性があります。詳細はこの質問にありますhttp://stackoverflow.com/questions/11677043/nswindowcontrollers-window-released-immediately – sergeyne

+2

はい、それはやりました。どうもありがとうございました! :) – akashivskyy

+0

ちょうど同じ問題に感謝の言葉を送った – ribeto

関連する問題