2012-01-30 5 views
1

私のアプリケーションには、単一のnibファイルがあります。 File's OwnerNSViewControllerであり、内部には自分のクラスの1つのプロパティにバインドしたい垂直スライダーだけがあります。 (私はそれがステータスバーアプリケーションなので、私は他のnibファイルを持っていないので、私はウィンドウがありません)。ペン先にランタイムがロードされ、NSMenuItemのカスタムビューが作成されます。NSViewControllerとバインディング

問題は、オブジェクトコントローラを使用してバインディングを実行したいが、オブジェクトコントローラの内容がわからないということです。プロジェクトのペン先から任意のクラスにアクセスするにはどうすればよいですか?

私が見た例では、通常、オブジェクトコントローラはFile's Ownerを使用して、コンテンツオブジェクトのバインディングをファイルの所有者に設定するクラス(およびバインディングのプロパティ)にアクセスします。しかし私の場合、File's Ownerからはクラスにアクセスできません。

任意のポインタ?

答えて

1

十分なサブクラスNSViewControllerであり、新しいサブクラスをFile's Ownerとして設定します。今すぐController Objectを使用してFile's Ownerにバインドすることは可能です。

0

XCode 4を使用する場合は、コントロールスライダーから.hファイル(AppController.h?)にドラッグすると、アウトレットまたはアクションを生成するオプションが表示されます。スライダをスライドさせることで発生するアクションを作成する場合は、アクションを選択する必要があります。生成されたメソッドは、スライダが変更されたときに呼び出されます。スライダの値をイベント(またはプログラム内の変更されたインスタンス変数)に反応させたい場合は、それを 'outlet'に設定します。 あなたが本当に何か他のものを探していた場合は、助けてくれることを願います。

+0

実際、バインディングを使用して、コンセントやアクションなしでそれを実行したいと考えています。私はこの非常に興味深い[投稿](http://crazyviraj.blogspot.com/2009/05/cocoa-what-is-files-owner-in-nib.html)を見つけました。より良い解決策は、NSViewControllerをサブクラス化し、File's Ownerを使用してバインドすることです。 – Carlo

+0

私は見て、あなたは正しいです。その場合、私の「解決策」はうまくいかないでしょう!あなたのソリューションはうまくいくようです。しかし、私はあなたがなぜサブクラスを好むのか不思議ですが、アウトレットとアクションを使用しないでください。 – markjs

+0

私のプログラムでは、垂直スライダをボリュームプロパティに接続する必要があります。私はバインディングの使用が最も正しい方法だと考えています(もちろん、アウトレットとアクションを使用することも可能です)。 – Carlo

関連する問題