Вы не отвечаете на сообщение проверки перетаскивания NSOutlineView.
Ваш оригинальный код реализовано tableView:validateDrop:proposedRow:proposedChildIndex:
. Как я указывал на этот вопрос, это неправильно, когда ваш табличный вид является контурным; NSOutlineView не будет отправлять сообщение проверки перетаскивания в виде таблицы, только сообщение проверки перетаскивания в виде схемы.
Вы с тех пор изменили свой метод проверки перетаскивания, чтобы он был объявлен следующим образом:
- (NSDragOperation)outlineView:(NSOutlineView*)view
validateDrop:(id <NSDraggingInfo>)info
proposedRow:(int)row
proposedChildIndex:(NSInteger)index
Но на самом деле ничто не отправляет такое сообщение.
Помните, что NSOutlineView редко имеет дело с индексами строк, поскольку они могут измениться, если родительские строки развернуты и свернуты. Вместо этого он имеет дело с «элементами», которые обычно являются модельными объектами.
Следовательно, правильный метод проверки:
- (NSDragOperation)outlineView:(NSOutlineView*)view
validateDrop:(id <NSDraggingInfo>)info
proposedItem:(id)item
proposedChildIndex:(NSInteger)index
Обратите внимание на имя третьего компонента селектора, а также тип и имя аргумента, который идет с ним.
После применения этого изменения ваш источник данных проверяет сбросы.