0

NSCollectionView と同様に、追加のプロトタイプ項目とプロトタイプ ビューを使用する必要があるリスト ビュー クラスがあります。Interface Builder のライブラリから NSCollectionView をドロップすると、これら 2 つのヘルパー アイテムが自動的に作成されます。しかし、このユース ケースを扱っている (どのように行われたかを説明している) 公式の Apple ドキュメントは 1 つも見つかりませんでした。

Apple Dev Guides を掘り下げると、「ibDidAddToDesignableDocument :」が見つかりました。
次のコードを使用して、ライブラリからのドロップ時に作成された補助アイテムを取得できました。

- (void)ibDidAddToDesignableDocument:(IBDocument *)document {
    [super ibDidAddToDesignableDocument:document];

    NSView *prototypeView = [[[NSView alloc] initWithFrame:NSMakeRect(0.0, 0.0, 300, 65.0)] autorelease];
    DLListViewItem *prototypeViewItem = [[[DLListViewItem alloc] initWithNibName:nil bundle:nil] autorelease];

    [document addObject:prototypeViewItem toParent:nil];
    [document addObject:prototypeView toParent:nil];

    [document connectOutlet:@"view" ofSourceObject:prototypeViewItem toDestinationObject:prototypeView];
    [document connectOutlet:@"listView" ofSourceObject:prototypeViewItem toDestinationObject:self];
    [document connectOutlet:@"prototypeItem" ofSourceObject:self toDestinationObject:prototypeViewItem];
}

しかし…</p>

…<strong>IB は、アイテムの埋め込み、コピー、複製などの「ibDidAddToDesignableDocument:」の他の呼び出しではなく、実際のライブラリからの最初のドラッグ時にのみNSCollectionView の補助アイテムを追加します。(私の方法はそうするでしょうが、そしてすべて)

これは、Apple が実際にこれに「ibDidAddToDesignableDocument:」を使用しているかどうか、そして私がこれで正しい軌道に乗っているかどうか疑問に思います。

どうすればこれを適切に模倣できますか?「ibDidAddToDesignableDocument:」の異なるコンテキストを区別するのに苦労しています。誰もがこれを成功させましたか?
残念ながら、Google、Google Code、GitHub、またはドキュメントのいずれも有用なものを明らかにしていないため、ここで助けが切実に必要です. :(

前もって感謝します!

編集: すばらしい、この質問でタンブルウィード バッジが表示されました。いいえ。
私は実際にはもっと役に立つ答えに興味がありますが、とにかくありがとう;)

4

1 に答える 1

0

少し前に自分で作ったプラグインでこれに苦労しました。私の場合、オブジェクトのプロパティをチェックして、既に初期化されているかどうかを確認し、その場合は補助オブジェクトの追加をスキップすることができました。BWToolkit も同様の内部チェックを使用していると思います。オブジェクトの「prototypeItem」プロパティをチェックして、補助オブジェクトの作成をスキップする必要があるかどうかを確認できませんでしたか?

于 2010-10-04T15:03:50.800 に答える