我有NSButton什么接受拖放将拖动的项目添加到NSMutableArray。如何从NSButton拖动以拖动NSMutableArray中的所有项?
答案 0 :(得分:2)
一种方法是使用NSView方法,dragImage:at:offset:event:pasteboard:source:slideBack:开始拖动。在您的自定义按钮类中,您将覆盖mouseDown:并调用该方法。我写了一个例子,其中拖动的图像是按钮的图像,我拖动的数据只是字符串“ARRAY”。这应该是你需要从源端做的所有事情 - 当你把它放在你的目的地时,它可以测试看看是什么被删除的是字符串“ARRAY”,然后做你想做的任何你创建的数组与你的第一滴。我在按钮中使用了NSMultipleDocuments图像,当我拖出按钮时,它会消失。
- (void)mouseDown:(NSEvent *)theEvent {
NSImage *pic = self.image;
NSSize dragOffset = NSMakeSize(0.0, 0.0);
NSPasteboard *pboard = [NSPasteboard pasteboardWithName:NSDragPboard];
[pboard declareTypes:[NSArray arrayWithObject:NSStringPboardType] owner:self];
[pboard writeObjects:[NSArray arrayWithObject:@"ARRAY"]];
NSPoint btnMiddle = NSMakePoint(self.frame.size.width/2,self.frame.size.height/2);
NSPoint picOrigin = NSMakePoint(btnMiddle.x - pic.size.width/2, btnMiddle.y + pic.size.height/2);
self.image = nil;
[self dragImage:pic at:picOrigin offset:dragOffset event:theEvent pasteboard:pboard source:self slideBack:YES];
}