Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocoa NSTableView Drop应用程序文件,出了什么问题?_Cocoa_Drag And Drop_Nstableview_Nsdragginginfo - Fatal编程技术网

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
中是否被命中?它已全部连接,但仍不工作。为了让它发挥作用,我使用了您的建议,但将其放在了表视图顶部的一个不可见视图中。