0

過去3日間、4つのアイコンを含む単一の行を作成しようとしていました。これは、ドラッグして再配置できます。私はさまざまなアプローチを試しましたが、これまでのところNSCollectionViewが最適です。これで、プログラムでNSCollectionViewを作成し、NSArrayを使用してそれにItemsを追加できます。ただし、アイコン/NSCollectionViewItemsを再配置することはできません。私は今かなり立ち往生していて、皆さんの一人が私を正しい方向に向けてくれることを願っています。

私はstackoverflow(およびインターネット全体)に関する多くの同様の質問を読みました。そこで、NSCollectionViewDelegateからメソッドを追加する必要があることが明らかになりました。

- (BOOL)collectionView:(NSCollectionView *)collectionView writeItemsAtIndexes:(NSIndexSet     *)indexes toPasteboard:(NSPasteboard *)pasteboard

-(BOOL)collectionView:(NSCollectionView *)collectionView canDragItemsAtIndexes:(NSIndexSet *)indexes withEvent:(NSEvent*)event

-(BOOL)collectionView:(NSCollectionView *)collectionView acceptDrop:(id < NSDraggingInfo >)draggingInfo index:(NSInteger)index dropOperation:(NSCollectionViewDropOperation)dropOperation

-(NSDragOperation)collectionView:(NSCollectionView *)collectionView validateDrop:(id < NSDraggingInfo >)draggingInfo proposedIndex:(NSInteger *)proposedDropIndex dropOperation:(NSCollectionViewDropOperation *)proposedDropOperation

-(NSArray *)collectionView:(NSCollectionView *)collectionView namesOfPromisedFilesDroppedAtDestination:(NSURL *)dropURL forDraggedItemsAtIndexes:(NSIndexSet *)indexes

これらを(戻り値とともに)NSCollectionViewサブクラスに追加しましたが、それでも何も得られません。したがって、私が今持っている質問は、NSCollectionViewDelegateのサブクラスを作成し、そこでこれらのメソッドをオーバーライドする必要があるかどうかです。

しかし、これは本当に正しい方向に進んでいますか?(お気づきかもしれませんが、私はCocoaの初心者なので、NSCollectionViewクラスが非常に混乱しているので、今はかなり迷っています。)

よろしくお願いします、フラン

4

1 に答える 1

0

これはサブクラスには入りません。これをデリゲート (通常はコレクション ビューにコンテンツを提供するコントローラー) に実装します。コントローラーをコレクション ビューのデリゲート (意思決定を要求するオブジェクト) として設定し、そのコントローラーにこれらのメソッドを実装します。

いくつかの非常に重要な読み物。

于 2013-01-24T15:23:11.670 に答える