Файл приложения NSTableView Drop, что не так? - PullRequest
2 голосов
/ 30 января 2011

У меня есть следующий код для поддержки переноса файла приложения в табличное представление. Проблема в том, что я даже не вижу зеленый +, когда перетаскиваю. Я думаю, что это как-то связано с 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 Ответ

2 голосов
/ 30 января 2011

registerForDraggedTypes не ищет массив расширений файлов;он принимает массив унифицированных идентификаторов типов .Если вы хотите принять имена файлов, используйте NSFilenamesPboardType:

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

Затем, чтобы принимать только .app файлы, проверьте расширение и верните YES из tableView:acceptDrop:row:dropOperation:, получив соответствующую информацию из NSDraggingInfo и его картон .

...