Перетаскивание NSOutlineView: как предотвратить потерю родительского элемента на одном из его дочерних элементов
Я настраиваю перетаскивание для моего NSOutlineView, и я хочу, чтобы родители не уронили одного из своих детей. Родитель и дети - все это группа. Я понимаю, что мне нужно сделать это в методе outlineView:validatedrop. Я думаю, что мне нужно создать NSFetchRequest с NSPredictate, чтобы получить все дочерние элементы родителя, но я не знаю, каким должен быть предикат.
Редактировать: это должно быть рекурсивно, поэтому оно также должно получать детей детей, если таковые имеются.
Какие-либо предложения?
2 ответа
- (NSDragOperation)outlineView:(NSOutlineView *)ov validateDrop:
(id <NSDraggingInfo>)info proposedItem:(id)item proposedChildIndex:(NSInteger)childIndex;
В этом методе выше, вы можете управлять элементом перетаскивания, можете или не можете принять. Пожалуйста, верните NSDragOperationNone
, значит предотвратить падение.
РЕШИТЬ:
Вместо того, чтобы копаться в основных объектах данных, я просто смотрю на NSTreeNodes, следуя примеру кода Apple.
Привязки заботятся об обновлении базовой базовой модели данных. Еще раз, если это выглядит слишком сложно, это, вероятно, не правильный подход.