• 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: sorting an NSTableView
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: sorting an NSTableView


  • Subject: Re: sorting an NSTableView
  • From: "James W. Walker" <email@hidden>
  • Date: Sat, 31 May 2008 17:23:07 -0700


On May 30, 2008, at 5:04 AM, Vijay Malhan wrote:

An Example:
mTable = member instance for your TableView
mData = member array which provides the data-objects.

Put the following code at a place where your table and data-source array is initialized. Like in awakeFromNib: method.

Here I'm sorting on key "name", Change it to whatever key you have in your data-object on which you want to do the sorting. You can do the same thing from IB as well, then you don't have to write the following code.

[mTable setSortDescriptors:[NSArray arrayWithObject:
		[[[NSSortDescriptor alloc]initWithKey:@"name" ascending:YES
selector:@selector(caseInsensitiveCompare:) ]autorelease]]];

[mData sortUsingDescriptors:[mTable sortDescriptors]];


Now implement the following delegate for NSTableView:

- (void)tableView: (NSTableView *)aTableView
sortDescriptorsDidChange: (NSArray *)oldDescriptors
{
	[mData sortUsingDescriptors: [aTableView sortDescriptors]];
	[mTable reloadData];
}

Thanks!

I missed that delegate method, since it's not listed with NSTableView, but with NSTableDataSource. Somehow it works, though it's a little hard to wrap my head around. The sort key is used to extract a string from members of the data array, and the selector is used to compare the strings, right? And if I hadn't represented my table data as an NSMutableArray containing NSDictionary objects, I'd have more work to do.

On Fri, May 30, 2008 at 12:18 PM, James W. Walker <email@hidden> wrote:
Hi. I'm a Cocoa newbie, and I'm trying to figure out how to enable sorting columns of my table, but the NSTableView guide doesn't say anything about it. I see that NSTableView has a setSortDescriptors method, NSTableColumn has a setSortDescriptorPrototype method, and that IB shows a "sort key" attribute for a table column, but I'm not clear on how to use them. Any hints or examples?
_______________________________________________

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


References: 
 >sorting an NSTableView (From: "James W. Walker" <email@hidden>)
 >Re: sorting an NSTableView (From: "Vijay Malhan" <email@hidden>)

  • Prev by Date: Re: incorporating mail
  • Next by Date: How do I use Sort Descriptor binding in IB on my array controller?
  • Previous by thread: Re: sorting an NSTableView
  • Next by thread: Re: sorting an NSTableView
  • Index(es):
    • Date
    • Thread