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.

有帮助吗?

解决方案 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).

其他提示

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.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top