Question

I implemented an NSArrayController subclass to implement row reordering with bindings, using the code included in this post as a starting point. In the -tableView:acceptDrop:row:dropOperation: method, I perform the following:

[self removeObjectAtArrangedObjectIndex:removeIndex];
[self insertObject:object atArrangedObjectIndex:insertIndex];

The above code updates the model twice (one for each statement). For my purposes, I would like to have only one update.

Is there any way to achieve this?

Thanks.

Était-ce utile?

La solution 2

I ended up doing the following:

[_content removeObject: [objects objectAtIndex: removeIndex]]; // < Here's the hack
[self insertObject:object atArrangedObjectIndex:insertIndex];

Where _content is in fact the content array of the controller.
The above works fine in my case (as described in my question).

Autres conseils

There's always the possibility of replacing the entire array if you want to incorporate many changes to an array into a single operation.

This might have unexpected effects for e.g. objects in the UI bound to your array, though.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top