1

簡単な要件があります。+ ボタンをクリックすると、カスタム ビューを に追加しようとしていSplitViewます。

NSView のサブクラスであるクラス MyCustomView を作成しました

アプリケーション nib ファイルには、ボタンなどを含むカスタム ビューがあります。

毎回新しい MyCustomView を割り当てる方法は?

これを行う例はありますか?

私は何かを望んでいます

MyCustomView *v1 = [[MyCustomView alloc] init];

..
..
[splitView addSubView:v1];
[splitView addSubView:v2];

...

助けてください

4

1 に答える 1

3

あなたの説明に基づいてあなたが説明していることを正確に伝えるのは難しいですが、私があなたを理解しているかどうか見てみましょう. 「+」をクリックするたびに、カスタム ビュー アセンブリの「コピー」を分割ビューに追加したいと思いませんか?

これを行う絶対的な最善の方法は、コピーされるカスタム ビュー アセンブリ (「プロトタイプ」) を独自の xib に配置することです。表現したいオブジェクトごとに、xibから新しいコピーをインスタンス化し、それを所有者に渡してから、それを親ビューに追加します(あなたの場合は分割ビュー...無制限の数のビューでは奇妙ですが、私は他のことを言うのに十分な詳細がありません)。

そう。最近の Cocoa の世界では、このようなビュー アセンブリには独自のビュー コントローラー ( NSViewController ) が必要です。これにより、xib のファイルの所有者が MyCustomViewController のインスタンスになり、その -view が xib のメイン コンテナー ビュー (すべてのサブビューを含むカスタム ビュー) に接続され、 -representedObject が任意のモデルに設定されるため、作業が簡単になります。カスタム ビューが表すオブジェクト。アプリは、モデル オブジェクトのすべてのビュー コントローラーのリスト (おそらく配列または辞書) を保持します。nibs/xibs からロードする方法の概要については、この SO の質問/回答を参照してください。

これは基本的にNSCollectionViewの仕組みです (ビューはすべて同じサイズでなければなりませんが、うまくいかない場合があります)。この場合、コレクション ビューは分割ビューに対応します。NSCollectionViewItem は MyCustomViewController に対応します (実際、10.5 以降では NSCollectionViewItem は NSViewController のサブクラスです)。カスタム ビューは、コレクション ビュー アイテムのメイン ビューです。コレクション内のモデル オブジェクトごとに、NSCollectionViewItem をインスタンス化し、xib からビュー プロトタイプを読み込み (理想的ですが、これはオプションです)、これを使用してアイテムのビューを設定し、アイテムの表現オブジェクト (モデル オブジェクト) を設定します。 .

これで物事が少し明確になることを願っています。基本的なことを十分に理解するために読む必要がありますが、それでも行き詰まっている場合は、質問を編集して明確にするか、より具体的な新しい質問を開いてみてください。

于 2011-11-01T15:32:11.507 に答える