• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: Reordering a table insanity
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Reordering a table insanity


  • Subject: Re: Reordering a table insanity
  • From: Quincey Morris <email@hidden>
  • Date: Wed, 28 Nov 2012 13:02:41 -0800

On Nov 28, 2012, at 02:17 , Graham Cox <email@hidden> wrote:

> That's my mental picture of the first part, but the outcome is incorrect, so either the algorithm or the implementation is wrong.

I got to wondering further about this, so I downloaded the TableViewPlayground sample project. Lo and behold, its "complex table view" window exposes in the UI all of the functionality we've been discussing -- begin/endUpdates, move/insert/delete -- so it really is a playground.

Turns out we just needed to fathom the mind of Dr. Corbin Seuss. Turns out this:

	[tableView moveRowAtIndex: fromIndex toIndex: toIndex]

does what it says -- it moves the row so that it *is* at toIndex. So, if fromIndex < toIndex, the row ends up *after* the row previously at toIndex, but if fromIndex >  toIndex, it ends up *before*. IOW, it's working in terms of row numbers, not rows.

I believe (though I don't think Graham said explicitly) that Graham's particular case wants to move selected rows so they precede the row initially at targetIndex, so it wants to work in terms of rows, not row numbers (so to speak).

If that's so, I think the loop algorithm needs to look like this:

C1. Loop over the "less than" set starting from its highest index and working down. At each iteration, move the row at the current index to 'targetIndex - 1'. (But don't decrement targetIndex here.)

C2. Loop over the "greater than" set starting from its lowest index and working up. At each iteration, move the row at the current index to the targetIndex row, and increment targetIndex.

Using TableViewPlayground, I used multiple moves bracketed by begin/endUpdate, and it animated very prettily at the endUpdate.


_______________________________________________

Cocoa-dev mailing list (email@hidden)

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:

This email sent to email@hidden

  • Follow-Ups:
    • Re: Reordering a table insanity
      • From: Quincey Morris <email@hidden>
References: 
 >Reordering a table insanity (From: Graham Cox <email@hidden>)
 >Re: Reordering a table insanity (From: Quincey Morris <email@hidden>)
 >Re: Reordering a table insanity (From: Graham Cox <email@hidden>)
 >Re: Reordering a table insanity (From: Graham Cox <email@hidden>)
 >Re: Reordering a table insanity (From: Quincey Morris <email@hidden>)
 >Re: Reordering a table insanity (From: Graham Cox <email@hidden>)

  • Prev by Date: Re: Reordering a table insanity
  • Next by Date: Re: Reordering a table insanity
  • Previous by thread: Re: Reordering a table insanity
  • Next by thread: Re: Reordering a table insanity
  • Index(es):
    • Date
    • Thread