使NSCollectionViewItems可以在NSCollectionView中重新排列

时间:2013-01-24 14:04:04

标签: macos cocoa

过去三天我一直试图创建一个包含4个图标的单行,您可以通过拖动重新排列。我尝试了很多不同的方法,到目前为止NSCollectionView是最好的方法。我现在可以以编程方式创建NSCollectionView并使用NSArray向其添加项目。但是,我仍然无法重新安排icons / 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类非常混乱。)

提前致谢, 反

1 个答案:

答案 0 :(得分:0)

这不属于子类。您将在委托中实现此功能(通常是向集合视图提供内容的控制器)。将控制器设置为集合视图的委托(它要求决策的对象)并在该控制器中实现这些方法。

Some very important reading.