문제

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