2012-04-19 13 views
2

私はWindowsアプリケーションのOSXポートで手を動かしている.NET開発者です。 MonoDevelopとMonoMac(XCode Interface Builderを使用)を使用してUIを作成しています。XCode/MonoMacに相当するカスタムコントロール

Windowsから来て、私は私のWinFormバージョンでこれらを広範囲に使用して以来、私は "UserControl"に相当するココアを理解しようとしています。私はパッケージ化して、私のCocoa UI全体のさまざまな場所で再利用したいコントロールのグループを持っています(ラベル、テキストボックス、ボタンなど)。

私が理解するところでは、NSViewのサブクラス化(「MyView」と呼ぶ)によって「カスタムビュー」を作成する必要があります。インターフェイスビルダーで「MyView」を作成することはできますが、メインウィンドウで使用すると常に空白になります。

私はIBのメインフォームにコントロールを配置しています。カスタムビュー(NSView)をオブジェクトライブラリから追加し、「カスタムクラス」の「クラス」プロパティを「MyView」に変更します。コントロールがデザイン時にレンダリングされない場合は問題ありませんが、実行時には全く空です。

私は本当にシンプル/明白な何かが欠けていると思う。カスタムビューはこのように使用されるはずですか?私がオンラインで見つけたすべての例は、私が望んでいない(私はちょうど一緒にコントロールを束ねて再利用することができます)カスタム図面を議論するようです。そこにいる誰も私のためにこれにいくつかの光を当てることができますか?

ありがとうございます。

答えて

3

標準コントロールのグループが必要な場合は、スタンドアロンビューNIB/XIBが必要な場合があります。次に、そのグループをインスタンス化し、そのトップレベルビューを取得し、そのビューを他のビュー階層に挿入するたびに、そのNIBをロードします。そのNIBを所有してロードするには、NSViewController(またはカスタムサブクラス)を使用します。

すでにウィンドウが含まれているNIBにフリービュー表示を追加することもできます。 NIBの所有者(多くの場合NSWindowControllerのインスタンスまたはサブクラス)は、その独立したビュー階層を参照するアウトレットを持ちます。コードでは、そのビュー階層を自由に使用して、適切な場所のウィンドウのビュー階層に挿入することができます。

通常、標準コントロールをグループ化するためだけにカスタムビュークラスは使用しません。ビューのサブクラスを作成して非標準ビューを作成するだけです。カスタムビューで描画するか、別の操作方法を提供します。

+0

ありがとう、これは非常に役に立ちました(遅い応答のために申し訳ありません...私は側を追跡しました)。私はまだ私が望むところでビュー階層にコントロールを挿入することに取り組んでいますが、私は良いスタートを切っています。 –

1

これが私の仕事:

  1. は(アイデンティティインスペクタでクラスの名前を変更しないでください)あなたの窓に「カスタムビュー」をドロップします。

  2. ウィンドウのコントローラで[CustomView]というカスタムビューのコンセントを作成します。あなたのウィンドウコントローラで

  3. awakeFromNibメソッドは、次のコード

  4. を追加
this.CustomView.AddSubview(new YourCustomViewController().View); 

注:それがロードされていないので、この質問に対する他の答えはあなたのビューが何のXIBを持っていないと仮定し、したがって、空に正しく。

+0

これは私のためにも、チップのおかげで働いた。 –