2011-01-29 1 views
1

У меня есть следующий код для поддержки удаления файла приложения в виде таблицы. Проблема в том, что я даже не вижу зеленый + при перетаскивании. Я думаю, что это имеет какое-то отношение к registerForDraggedTypes:, но я не уверен. Я пробовал много учебников, и никто не работал для меня.NSTableView Drop Файл приложения, что происходит неправильно?

- (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 не ищет массив расширений файлов; он принимает массив uniform type indentifiers. Если вы хотите принять имена файлов, используйте NSFilenamesPboardType:

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

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

+0

По какой-то причине я все еще не вижу зеленый +. Что может быть причиной этого? – nosedive25

+0

Проверьте очевидность: подключен ли ваш IBOutlet для просмотра таблицы? Связан ли делегат представления таблицы? Получается ли точка останова или NSLog в 'acceptDrop'? – kevingessner

+0

Все было подключено, но все еще не работает. Чтобы заставить его работать, я использовал ваше предложение, но поместил его в невидимый NSView поверх табличного представления. – nosedive25

 Смежные вопросы

  • Нет связанных вопросов^_^