0

次のクラス階層があります。

NSViewController
  MyGeneralViewController
    ViewControllerA
    ViewControllerB

MyGeneralViewControllerViewControllerAとの両方で使用されるいくつかの一般的なコードを保持しますViewControllerB。一般的なコードの1つは、の作成とNSToolbarに必要なプロトコルメソッドの実装ですNSToolbarDelegate

ツールバーのボタンの1つは、ユーザーがNSTextView別のウィンドウを開くことができるボタンです(より多くの領域、キーワードを操作するための追加機能など)。

このための方法は次のとおりです。

- (IBAction) openTextWindow: (id) sender {

    [self setTextWindowController: [[TextWindowController alloc] init]];
    [[self textWindowController] showWindow];

}

このツールバーボタンは、によって制御されるビューでのみ使用できますViewControllerA。私の推論は、のopenTextWindowメソッドのみを実装すると、ランタイムシステムがクラス階層を上ってツールバーボタンとに定義されたメソッドを検索するため、ViewControllerAによって制御されるビューのツールバーボタンが灰色(使用不可)になるというものでした。ViewControllerBそれを見つけられません。

これはそうではないようです。を使用してメソッドを実装するとMyGeneralViewController、ボタンは常に使用可能になります(期待どおりですが、必要なものではありません)。しかし、私がそれを実装するとき、ViewControllerAそれは決して利用できません。

私は何かが足りないのですか、それともこれが機能するはずの方法ですか?

4

1 に答える 1

0

変。これをしばらく置いた後、もう一度やってみることにしました。プロジェクトをクリーンアップした後、すべてが期待どおりに機能しました。

于 2012-01-26T15:29:05.163 に答える