Я пытаюсь настроить очень простое перетаскивание для моего NSTableView. В представлении таблицы есть один столбец (с пользовательской ячейкой). Столбец связан с NSArrayController, а массив содержимого массива массива привязан к NSArray на моем объекте контроллера. Данные отображаются в таблице точно. Я соединил dataSource
и delegate
выходы табличном для моего объекта контроллера, а затем реализованы следующие методы:NSTableView Drag and Drop не работает
- (BOOL)tableView:(NSTableView *)aTableView writeRowsWithIndexes:(NSIndexSet *)rowIndexes toPasteboard:(NSPasteboard *)pboard
{
NSLog(@"dragging");
return YES;
}
- (NSDragOperation)tableView:(NSTableView*)tv validateDrop:(id <NSDraggingInfo>)info proposedRow:(NSInteger)row proposedDropOperation:(NSTableViewDropOperation)op
{
return NSDragOperationEvery;
}
- (BOOL)tableView:(NSTableView *)aTableView acceptDrop:(id <NSDraggingInfo>)info
row:(NSInteger)row dropOperation:(NSTableViewDropOperation)operation
{
return YES;
}
Я также зарегистрированных типов сопротивления в -awakeFromNib
:
#define MyDragType @"MyDragType"
- (void)awakeFromNib
{
[super awakeFromNib];
[_myTable registerForDraggedTypes:[NSArray arrayWithObjects:MyDragType, nil]];
}
Проблема заключается в том, что -tableView: writeRowsWithIndexes: toPasteboard: метод никогда не назывался. Я просмотрел множество примеров, и я не могу понять, что я делаю неправильно. Может ли проблема заключаться в том, что я использую пользовательскую ячейку? Есть ли что-то, что я должен переопределить в подклассе ячеек, чтобы включить эту функцию?
EDIT: Подтверждено. Переключение пользовательской ячейки для обычной работы по перетаскиванию NSTextFieldCell. Теперь, Как сделать перетаскивание с моей пользовательской ячейкой?
Вы отлаживали и * проверяли * источник данных и делегировать членов вашего 'NSTableview' подключены, как ожидалось? – cacau
Это вопрос с 2011 года, с тех пор я решил эту проблему: http://stackoverflow.com/a/4676823/153112. – indragie