次のクラス階層があります。
NSViewController
MyGeneralViewController
ViewControllerA
ViewControllerB
MyGeneralViewController
ViewControllerA
との両方で使用されるいくつかの一般的なコードを保持しますViewControllerB
。一般的なコードの1つは、の作成とNSToolbar
に必要なプロトコルメソッドの実装ですNSToolbarDelegate
。
ツールバーのボタンの1つは、ユーザーがNSTextView
別のウィンドウを開くことができるボタンです(より多くの領域、キーワードを操作するための追加機能など)。
このための方法は次のとおりです。
- (IBAction) openTextWindow: (id) sender {
[self setTextWindowController: [[TextWindowController alloc] init]];
[[self textWindowController] showWindow];
}
このツールバーボタンは、によって制御されるビューでのみ使用できますViewControllerA
。私の推論は、のopenTextWindow
メソッドのみを実装すると、ランタイムシステムがクラス階層を上ってツールバーボタンとに定義されたメソッドを検索するため、ViewControllerA
によって制御されるビューのツールバーボタンが灰色(使用不可)になるというものでした。ViewControllerB
それを見つけられません。
これはそうではないようです。を使用してメソッドを実装するとMyGeneralViewController
、ボタンは常に使用可能になります(期待どおりですが、必要なものではありません)。しかし、私がそれを実装するとき、ViewControllerA
それは決して利用できません。
私は何かが足りないのですか、それともこれが機能するはずの方法ですか?