2009-05-13 1 views
9

NSWindowController initWindowNibNameを使用してロードするNIBファイルがあります。 NIBファイルには1つのNSWindowが含まれています。 File's OwnerはNSWindowControllerクラスです。私は、ファイルの所有者からウィンドウのアウトレットを接続しました。NSWindowControllerを使用してNIBファイルをロードしても、ウィンドウまたはトップレベルのオブジェクトが設定されない

NIBを読み込むと、[windowController window]はnilであり、トップレベルのオブジェクト配列も同様です。しかし、私は[windowController showWindow:nil]を呼び出して、ウィンドウを正常に表示することができます。

何かがここで正しく表示されません。私は接続を確認し、File's OwnerはOKです。実際、私は、デバッガのwindowControllerインスタンスの_owner値を見ると、私はそれが私が期待しているようにそれ自身を指しているのを見ます。

何が起こっているのかについてのご意見はありますか?

ありがとうございます!

答えて

6

[windowController window]がnilであると言うとき、どうやってこれを決定していますか?最初に-windowが呼び出されるまで、NIBは実際にロードされません。したがって、デバッガを見ている場合、showWindow:に電話するまで、_windowはゼロとして表示されます。その後、_windowは、nil以外の値を持つ必要があります。

+0

ねえ、そうです。私は[コントローラウィンドウ]と呼ばれる前にウィンドウがヌルではないと主張していました。私はまだ、ココアがあなたのためにカバーしている「魔法」の多くに慣れていません...それは私よりもスマートです。あるいは、私が思っているよりも馬鹿に見えます。 – psychotik

+1

私がココアに入っている時間が長くなればなるほど、それは本当に小さな魔法を学ぶほどです(KVOを除いて、あなたがそれを理解していても、方法の驚きは魔法です)。このトリックは、内部実装の詳細に頼るものではありません。 _windowが何を意味するかをあなたが知っていると仮定しないでください。それにはアンダースコアがあります。それはあなたのビジネスではありません。パブリックインターフェイスは、その動作において非常に一貫しています。彼らの周りに潜入しようとしないでください。がんばろう! –

5

NSWindowControllerをサブクラス化しましたか?私はこれを行うと

は、私がNSWindowControllerのを使用MyWindowControllerと呼ばれ、サブクラスのinit

initWithWindowNibName:を呼び出すそして、設定ファイルの所有者は、MyWindowControllerクラスを指すように。

+3

NSWindowControllerをサブクラス化する必要はありません。それは許可されていますが、必須ではなく、精神病の問題を解決すべきではありません。 –

+1

PHとAbizernの両方が私の問題を解決することに功績を残しました。 – user523234

+0

@ user523234、どうもありがとう、私の問題を解決するために私のケースで尋問者! – Mazyod

関連する問題