2009-05-12 12 views
1

私はIBOutletを正しく使用していないかもしれませんし、NIBファイルの仕組みと他の微妙な違いが原因で問題が発生しています - 何か助けてもらえますか?が欲しいです)。IBOutletがCocoa MVCプロジェクトに設定されていません

私はViewオブジェクトとControllerオブジェクトを持っています。どちらもNIBにあります。コントローラのinitは、NIBがロードされ、Viewが 'awakeFromNib'コールバックで初期化されるときにも呼び出されます。 これらの2つのオブジェクトを接続する方法が必要です。具体的には、 'View'オブジェクトでコントローラの関数を呼び出すことができます。

オンラインでドキュメンテーションに基づいて、これらを接続する方法は、ビューでIBOutletを定義し、それをInterface Builderのコントローラに接続することです。だから、表示インタフェースで

IBOutlet Controller* _controller; 

を作成し、グラフコントローラにビューから接続を行うと、コントローラに_controller出口を割り当てることによってInterface Builderでコントローラオブジェクトに接続された(青色の一般物体ボックスInterface Builderで)。

実行時でも_controllerは常に_nilです。コントローラのinitが実際に呼び出されたことを確認しました。

明らかに私はこれについて不明ですか? これらの2つを簡単に接続できますか?彼らはどちらもNIBによって作成されているので、私は両方へのポインタを持つ共通のオブジェクトを持っていません。

+0

ペン先の所有者はどれですか? –

答えて

0

IBOutletviewDidLoad instadにアクセスしてみてください。

awakeFromNibが呼び出されたときに、IBOutletsのすべてが入力されていないと(ドキュメンテーションにも意味があるように見えますが)。

+0

awakeFromNibで使用しようとしていません...メニューをクリックすると、Viewオブジェクトで実行中のコードが発生する場合があります。 私が心配する必要があるrefcounting fooはありますか? –

+0

Btw、IBOutletが設定されると、クリーンアップが完了するまで利用可能になるはずです。 これは有効ですか? –

+1

すべてのIBOutlets *は、あなたがペンで設定していない限り、awakeFromNibの時刻によって*設定されます。これが起こらない場合は、複数のペン先をゆっくりと操作したり、不具合を見つけたりすることはあまりありません。後者の場合は、報告する必要があります(https://bugreport.apple.com/)。 –

関連する問題