2011-09-09 3 views
2

私は非常に新しいプログラミングのMACです。ちょうど3日前に始まりました。
は、私は新しいwndowcontrollerにNSWindowControllerが新しいウィンドウを表示

ThirdViewController *tvc = [[ThirdViewController alloc] initWithWindowNibName:@"SecondViewController"]; 

    [tvc showWindow:self]; 

この細かい作業が、私はボタンを押すと、再びそれが開きます、同じウィンドウを開くには、このコードを使用しています
メインウィンドウで1つのボタンを持っているサンプルアプリを作っています再度クリックするたびに、画面上に+1のウィンドウが表示されます。
新しいウィンドウが既に画面に表示されている場合、ボタンで同じウィンドウを追加できない場合はどうすればいいですか?事前に

感謝:)

+0

なぜ 'ThirdWindowController'ではなく' ThirdViewController'ですか?これはウィンドウコントローラであり、ビューコントローラではありません。 :) –

+0

私はwindowControllerを忘れていました..現在IOSに取り組んでいるので、コントローラを見ることができます。:p – iUser

答えて

2

そのコードは、ボタンがクリックされるたびに、あなたは効果的に、新しいウインドウコントローラを作成するnibファイルからそのウィンドウをロードすると、そのウィンドウに何度でもを見せている実行されている場合ボタンをクリックすると表示されます。

この問題を回避する標準的な方法は、最初にnilでインスタンス変数を1回だけウィンドウコントローラに割り当てることです。その後、インスタンス変数はもうnilではなく、別のコントローラを作成してnibファイルを再度ロードしないようにテストすることができます。

あなたは、例えば、アプリケーションデリゲートに以下のインスタンス変数を宣言することができまたは任意のコントローラは、第三のウィンドウコントローラの責任を負わなければならない:ボタンをクリックする

ThirdViewController *tvc; 

と、:

if (nil == tvc) { 
    // If tvc is nil then it's the first time this code is being executed 
    tvc = [[ThirdViewController alloc] initWithWindowNibName:@"SecondViewController"]; 
} 

[tvc showWindow:self]; 
+0

ITs working .. thanks .. !! :) – iUser

関連する問題