Файл приложения NSTableView Drop, что не так?
У меня есть следующий код для поддержки перетаскивания файла приложения в табличное представление. Проблема в том, что я даже не вижу зеленый +, когда перетаскиваю. Я думаю, что это как-то связано с 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;
}
заранее спасибо
1 ответ
Решение
registerForDraggedTypes
не ищет массив расширений файлов; он принимает массив одинаковых идентификаторов типов. Если вы хотите принять имена файлов, используйте NSFilenamesPboardType
:
[self registerForDraggedTypes:[NSArray arrayWithObject:NSFilenamesPboardType]];
Тогда, чтобы только принять .app
файлы, проверьте расширение и верните YES из tableView:acceptDrop:row:dropOperation:
, получая соответствующую информацию от NSDraggingInfo
и его картон.