我需要从包含图像路径的NSTableView中拖出一行并将其拖放到NSImageView上,并且拖动行的图像应该出现在imageview中。帮助赞赏
答案 0 :(得分:2)
非常感谢。它确实奏效了。我为NSStringPboardType和NSFilenamesPboardType注册了NSImageView和NSTableView。然后在我使用的TableView委托中 以下代码。
- (BOOL)tableView:(NSTableView *)tv writeRowsWithIndexes:(NSIndexSet *)rowIndexes toPasteboard:(NSPasteboard*)pboard
{
NSString *string = [filePath objectAtIndex:[rowIndexes firstIndex]];
[pboard declareTypes:[NSArray arrayWithObject:NSStringPboardType] owner:self];
[pboard setString:string forType:NSStringPboardType];
return YES;
}
在NSImageView NSDragging Destination非正式协议中,使用以下代码。
- (NSDragOperation)draggingEntered:(id <NSDraggingInfo>)sender
{
NSString *str = [[sender draggingPasteboard] stringForType:NSStringPboardType];
myImage = [[NSImage alloc] initWithContentsOfFile:str];
[self setImage:myImage];
[self setNeedsDisplay: YES];
return NSDragOperationCopy;
}
欢呼:)
答案 1 :(得分:1)
首先,在table data source中,实现表行拖动所需的方法。您将表示行的数据放在一个或多个数据类型的拖动粘贴板上。您将使用的一种类型是NSFilenamesPboardType
,它采用一系列路径名。
然后,创建一个可以在drop中处理NSFilenamesPboardType
的NSImageView的子类。 (您需要实现the NSDraggingDestination informal protocol中的方法。)然后使您的图像视图成为此子类的实例,而不是NSImageView,以及NSFilenamesPboardType
的{{3}}实例。