Файл приложения 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 и его картон.

Другие вопросы по тегам