2011-02-03 8 views
13

私はすでにこのトピックに関するいくつかの質問をしてきましたが、本当にそれを行う方法について実際の答えを得ていませんでした(実際には "Tumbleweedバッジ"笑)。ドキュメントベースのアプリケーションのメニュー項目を接続する

私はドキュメントベースのアプリケーションを持っています(つまり、Menu.XibはMyDocument.Xibから分離しています)。

「ボールド」ボタン、または「スペルチェック」ボタン(「書式>フォントなど」の下にある「メニュー」欄に表示されている項目)をMyDocument(プライマリインターフェイス)に追加したいと思います。私はMyDocument.Xibにフォントマネージャを追加しようとした。

すべてのヘルプは大(これは今数週間のための私を困惑している、それが動作するかどうか、私はすぐに答えを報います)いただければ幸いです。

これを行うと、フォントマネージャを使用して、スペルチェックなどを有効にすることはできません。

これを行うにはよりよい方法が必要です。

アップルのドキュメントは非常に曖昧です。

答えて

17

これは、IBのFirst Responderオブジェクトが対象とするものです。アクションを接続するためのプロキシオブジェクトです。送信されたアクションメッセージは、レスポンダチェーンを受け入れた最初のオブジェクトに渡されます。ドキュメントベースのアプリケーションの場合、レスポンダチェーンには現在のドキュメントが含まれます。したがって、メニューアイテムをドキュメントに接続するには:

  1. 必要に応じて、最初のレスポンダにアクションを追加します。これはIBのインスペクタウィンドウから行うことができます。
  2. アクションをFirst Responderに通常のオブジェクトのように接続します。
  3. 文書内にアクションメソッドを実装します。

最初のレスポンダにプログラム的にメッセージを追加する必要がある場合は、オブジェクトのターゲットをnilに設定します。

+1

私はDocument.hに 'IBAction'を追加しましたが、MainMenu.xibの最初のレスポンダのアクションリストにすぐに現れました。これは、多くのおかげで、助けて! – mtmurdock

+0

私は理由はわかりませんが、@mtmurdockは、IBActionがスーパークラスで実装されていても、独自のIBActionメソッドを定義し、そこからスーパークラスメソッドを呼び出す必要があったと言います。これは、NSPersistentDocument拡張機能用です。 –

+1

@CaspNZこれらの命令は、IBが別のアプリケーションであった場合、Xcode 4より前の命令です。今すぐ自動的に表示されるはずです。通常はメソッドをオーバーライドし、バージョンが呼び出されると、スーパー実装を呼び出すことができます。 – ughoavgfhw

関連する問題