Cocoa NSTableView Drop应用程序文件,出了什么问题?
我有以下代码支持将应用程序文件拖放到表视图中。问题是我在拖放时甚至看不到绿色+。我认为这与Cocoa NSTableView Drop应用程序文件,出了什么问题?,cocoa,drag-and-drop,nstableview,nsdragginginfo,Cocoa,Drag And Drop,Nstableview,Nsdragginginfo,我有以下代码支持将应用程序文件拖放到表视图中。问题是我在拖放时甚至看不到绿色+。我认为这与注册表或碎片类型有关:,但我不确定。我试过很多教程,但没有一个对我有用 - (void)awakeFromNib { [apps registerForDraggedTypes:[NSArray arrayWithObject:@"app"]]; } - (BOOL)tableView:(NSTableView *)tv writeRowsWithIndexes:(NSIndexSet *)ro
注册表或碎片类型有关:
,但我不确定。我试过很多教程,但没有一个对我有用
- (void)awakeFromNib {
[apps registerForDraggedTypes:[NSArray arrayWithObject:@"app"]];
}
- (BOOL)tableView:(NSTableView *)tv writeRowsWithIndexes:(NSIndexSet *)rowIndexes toPasteboard:(NSPasteboard*)pboard
{
return YES;
}
- (NSDragOperation)tableView:(NSTableView*)tv validateDrop:(id <NSDraggingInfo>)info proposedRow:(int)row proposedDropOperation:(NSTableViewDropOperation)op
{
return NSDragOperationCopy;
}
- (BOOL)tableView:(NSTableView *)aTableView acceptDrop:(id <NSDraggingInfo>)info
row:(int)row dropOperation:(NSTableViewDropOperation)operation
{
return YES;
}
-(void)从NIB唤醒{
[apps RegisterForDragedTypes:[NSArray arrayWithObject:@“app”];
}
-(BOOL)tableView:(NSTableView*)带索引的电视写入程序:(NSIndexSet*)行索引到粘贴板:(NSPasteboard*)pboard
{
返回YES;
}
-(NSDragOperation)tableView:(NSTableView*)tv validateDrop:(id)建议的信息row:(int)建议的行DropOperation:(NSTableViewDropOperation)op
{
返回NSDRAGO操作副本;
}
-(BOOL)tableView:(NSTableView*)aTableView acceptDrop:(id)信息
行:(int)行dropOperation:(NSTableViewDropOperation)操作
{
返回YES;
}
提前感谢没有寻找文件扩展名数组;它需要一个数组。如果要接受文件名,请使用NSFilenamesPboardType
:
[self registerForDraggedTypes:[NSArray arrayWithObject:NSFilenamesPboardType]];
然后,要仅接受
.app
文件,请检查扩展名并从表视图:acceptDrop:row:dropOperation:
返回YES,从中获取适当的信息。出于某种原因,我仍然没有看到绿色+。这可能是什么原因造成的?检查显而易见的问题:表视图的IBOutlet是否已连接?表视图代理是否已连接?断点或NSLog在acceptDrop
中是否被命中?它已全部连接,但仍不工作。为了让它发挥作用,我使用了您的建议,但将其放在了表视图顶部的一个不可见视图中。