Перетаскивание NSOutlineView: как предотвратить потерю родительского элемента на одном из его дочерних элементов - PullRequest
1 голос
/ 29 октября 2011

Я настраиваю перетаскивание для моего NSOutlineView, и я хочу, чтобы родители не бросали одного из своих детей.Родитель и дети - все это группа.Я понимаю, что мне нужно сделать это в методе outlineView: validatedrop.Я думаю, что мне нужно создать NSFetchRequest с NSPredictate, чтобы получить все дочерние элементы родителя, но я не знаю, каким должен быть предикат.

Изменить: это должно быть рекурсивно, поэтому он также должен получить детей детей, если таковые имеются.

Есть предложения?

Ответы [ 2 ]

1 голос
/ 30 ноября 2012
- (NSDragOperation)outlineView:(NSOutlineView *)ov validateDrop:
(id <NSDraggingInfo>)info proposedItem:(id)item proposedChildIndex:(NSInteger)childIndex;

В этом методе выше вы можете управлять перетаскиванием элемента, можете или не можете принять.Пожалуйста, верните NSDragOperationNone, значит предотвратите падение.

0 голосов
/ 30 октября 2011

РЕШИТЬ:

Вместо того чтобы копаться в основных объектах данных, я просто смотрю на NSTreeNodes, следуя примеру Apple .

.

Привязки заботятся об обновлении базовой базовой модели данных. Еще раз, если это выглядит слишком сложно, это, вероятно, не правильный подход.

...