Hi all,

I'm driving myself insane with this.

I have a table view that can be reordered by dragging. It supports a multiple 
selection.

When I drag multiple items, which can be a discontiguous selection, and drop 
them at a given row, I want to animate the reordering, so I'm using 
-[NSTableView moveRowAtIndex:toIndex:];

The problem is that as I iterate over the items being moved, this changes the 
order, so the indexes get messed up, and the items end up in the wrong places. 
I'm trying to work out how to compensate for the move but I must be having a 
brainfade sort of day and can't get anything quite right, which is why it's 
driving me round the bend.

Can anyone point me in the right direction?

Essentially my code is:

index = [items firstIndex];

while( index != NSNotFound )
{
        [table moveRowAtIndex:index toIndex:targetIndex];

        index = [items indexGreaterThanIndex:index];

        // do something to the index to make it right having moved the row I'm 
iterating
}

where <items> is the NSIndexSet containing the original selection being dragged.


As an additional exercise, this table is associated with a mutable array in my 
data model which must also be reordered to match. Once I can correctly order 
the table rows this should be much the same thing,
though since NSMutableArray has -itemsAtIndexes:, -removeItemsAtIndexes, etc 
using those might be a better idea.

What's missing is a -[NSMutableArray moveItemsAtIndexes:(NSIndexSet*) indexes 
toIndex:(NSUInteger) index]; so how do I implement such a method correctly?


--Graham



_______________________________________________

Cocoa-dev mailing list ([email protected])

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to [email protected]

Reply via email to