2

私は、Windows アプリケーションの OSX ポートを試している .NET 開発者です。UI を作成するために、MonoDevelop と MonoMac (XCode Interface Builder を使用) を使用しています。

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

私が理解していることから、NSViewをサブクラス化して「カスタムビュー」を作成する必要があります(「MyView」と呼びましょう)。Interface Builder で "MyView" を作成することはできますが、メイン ウィンドウで使用すると、常に空または空白で表示されます。

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

本当に単純で明白なものが欠けているのではないかと思います。カスタム ビューはこのように使用されることになっていますか? 私がオンラインで見つけたすべての例は、私が望んでいないカスタム描画について議論しているようです (私は、それらを再利用できるように、一連のコントロールを一緒に使用したいだけです)。誰かが私のためにこれに光を当てることができますか?

前もって感謝します。

4

2 に答える 2

3

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

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

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

于 2012-04-19T21:01:52.330 に答える
1

これは私のために働いた:

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

  2. 「CustomView」と呼ばれるウィンドウのコントローラにカスタム ビューのアウトレットを作成します。

  3. ウィンドウ コントローラーの awakeFromNib メソッドに、次のコードを追加します。

    this.CustomView.AddSubview(new YourCustomViewController().View);

注:この質問に対する他の回答では、ビューに XIB がないことを前提としており、適切に読み込まれていないため空と表示されます。

于 2012-09-26T08:34:17.887 に答える