【问题标题】:NSTableView Drop App File, Whats Going Wrong?NSTableView 删除应用程序文件,出了什么问题?
【发布时间】:2011-01-29 21:29:13
【问题描述】:

我有以下代码来支持将应用程序文件拖放到表格视图中。问题是当我拖放时我什至看不到绿色+。我认为这与registerForDraggedTypes: 有关,但我不确定。我尝试了很多教程,但没有一个对我有用。

- (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;
}

提前致谢

【问题讨论】:

    标签: cocoa drag-and-drop nstableview nsdragginginfo


    【解决方案1】:

    registerForDraggedTypes 不是在寻找文件扩展名数组;它需要一个uniform type identifiers 的数组。如果您想接受文件名,请使用NSFilenamesPboardType

     [self registerForDraggedTypes:[NSArray arrayWithObject:NSFilenamesPboardType]];
    

    然后,只接受.app 文件,检查扩展名并从tableView:acceptDrop:row:dropOperation: 返回YES,从NSDraggingInfo and its pasteboard 获取适当的信息。

    【讨论】:

    • 出于某种原因,我仍然没有看到绿色的 +。这可能是什么原因造成的?
    • 检查显而易见的:您的 IBOutlet 是否连接了表格视图?表视图委托是否已连接? acceptDrop 中的断点或 NSLog 是否被命中?
    • 一切都已连接,但仍无法正常工作。为了让它工作,我使用了你的建议,但把它放在表格视图顶部的一个不可见的 NSView 中。
    猜你喜欢
    • 2021-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-06
    • 2020-08-07
    相关资源
    最近更新 更多