Перетаскивание NSOutlineView: как предотвратить потерю родительского элемента на одном из его дочерних элементов

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

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

Какие-либо предложения?

2 ответа

- (NSDragOperation)outlineView:(NSOutlineView *)ov validateDrop:
(id <NSDraggingInfo>)info proposedItem:(id)item proposedChildIndex:(NSInteger)childIndex;

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

РЕШИТЬ:

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

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

Другие вопросы по тегам