0

PXListView を管理するための NSViewController を作成しました....デリゲートはファイル所有者と接続しています...

ここでは、すべてが期待どおりに機能しています..ドラッグアンドドロップを除いて...

ドラッグ中はドラッグデリゲート機能に入っていません...そしてドラッグ中は+記号を表示していません(つまり、記号をドラッグしています)...そしてセルをドラッグすると元の位置に再配置されます

#import "PXListView.h"

@interface ListViewController : NSViewController <PXListViewDelegate>
{
    IBOutlet  PXListView *listView;
    NSMutableArray *_listItems;

    int count;

}
- (void)addCell;

@end



- (BOOL)listView:(PXListView*)aListView writeCellsWithIndexes:(NSIndexSet*)rowIndexes toPasteboard:(NSPasteboard*)dragPasteboard
{
    // +++ Actually drag the items, not just dummy data.
    [dragPasteboard declareTypes: [NSArray arrayWithObjects: NSStringPboardType, nil] owner: self];
    [dragPasteboard setString: @"Just Testing" forType: NSStringPboardType];

    return YES;
}

- (NSDragOperation)listView:(PXListView*)aListView validateDrop:(id <NSDraggingInfo>)info proposedCell:(NSUInteger)row
      proposedDropHighlight:(PXListViewDropHighlight)dropHighlight;
{
    return NSDragOperationCopy;
}

- (BOOL)listView:(PXListView*)aListView acceptDrop:(id <NSDraggingInfo>)info row:   (NSUInteger)row dropHighlight:(PXListViewDropHighlight)dropHighlight
{
    NSLog(@"Accept Drop");

    ListViewThumbnailObject *temp = [_listItems objectAtIndex: [listView selectedCell]];
    [_listItems removeObjectAtIndex: [listView selectedCell]];
    [_listItems insertObject: temp atIndex: row];
    [listView reloadData];
    return YES;
}

ドラッグ関連のデリゲート メソッドには入っていません。

「nib」ファイルデリゲートでは、ファイル所有者に関連付けられています...

誰でもこの問題を解決する方法を教えてもらえますか?

ありがとう、ムトゥ

4

1 に答える 1

0

ドロップを受け入れることができるようにするには、受け入れる予定のすべてのドラッグされたタイプのリストビューを登録する必要があります。awakeFromNibリストビューコントローラクラスのメソッドにこれを追加してみてください。

- (void)awakeFromNib {
    [listView registerForDraggedTypes:[NSArray
               arrayWithObjects:NSStringPboardType, nil]];
}

詳細については、「ドラッグアンドドロッププログラミングトピック:ドラッグ操作の受信」を参照してください。

NSStringPboardTypeメソッドに書き込むために宣言した型であるため、ここで配列で使用したことに注意してくださいlistView:writeCellsWithIndexes:toPasteboard:。使用するタイプの正確な配列は、サポートするタイプとサポートするドラッグ操作のタイプによって異なります(たとえば、ドラッグアンドドロップを実装して、単一のリストビューでアイテムを並べ替えることができますか? 、またはFinderから、またはFinderに、または独自のアプリケーションの異なるビュー間でアイテムをドラッグできるようにしますか?サポートしたいドラッグ操作のタイプを説明すると、それらをどのように実装したいかについての詳細を提供できます。

于 2013-02-02T08:45:54.480 に答える