2011-09-11 8 views
1

私は関連するコントローラにアクセスしたいボタンを持っているペン先を持っています。しかし、今の所有者は、一般的なNSViewControllerであり、AppDelegate内で私のようなコントローラにペン先を割り当てます。一般的にボタンの参照アウトレットを割り当てるために、nibファイル内コントローラを指定せずに.nibにコンセントを定義できますか?

[browseViewController initWithNibName:@"BrowseView" bundle:[NSBundle mainBundle]]; 

しかし、それは可能ですか?言い換えれば、コンセントに名前を付けてFile's Ownerを指すようにして、ペン先がコントローラに接続されている場合、コントローラに同じ名前のコンセントがあれば動作しますか?

答えて

1

ファイル所有者は、IBでそれを接続するときに、特定のアウトレットおよび/またはアクションを持っている必要があります。存在しないコンセントに接続することができたとしても、ペン先がロードされている間は例外が発生します。あなたはコンセントを確認し、それをオブジェクトに接続し、ペン先を保存し、オブジェクトからアウトレットを削除して、アプリケーションを実行したいのですか? NSUnknownKeyExceptionが発生します。

最も簡単な方法は、コントローラの共通のスーパークラスを使用することです。コントローラーが共通の祖先から派生することができない場合、私が見る唯一の回避策は、アウトレットのプロパティーとアクションを定義するプロトコルを作成することです。 MyNibProtocol>

NSObjectの<今アウトレットとアクションを接続するためのペン先で、このオブジェクトを使用:プロトコルに

MyObjectに準拠したオブジェクトを作成します。 ただし、プロパティとメソッドをオプションにすることはできません。それらを実装する必要があります。

関連する問題