On Sun, Jun 1, 2008 at 5:53 AM, James W. Walker <[EMAIL PROTECTED]> wrote:
> > 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, Yes. The value on which the sorting is to be done. > and the selector is used to compare the strings, right? Yes. > And if I hadn't represented my table data as an NSMutableArray containing > NSDictionary objects, I'd have more work to do. It has to be a collection/array of sortable objects(and not necessarily a Dictionary - see KVC, where the accessor method for a value acts as a key). so let's say if you have your object interface like this: @interface myObject: NSObject{ NSString* mName; id mOtherData; } - (NSString *)name; - (void)setName: (NSString *)aName; @end then you can use "name" as a key. Do some reading on KVC for more details. An also, with this, these statements will be equivalent: [anObject valueForKey@"name"] == [anObject name] and [anObject setValue: @"someText" forKey: @"name"] == [anObject setName: @"someText" ] Thanks, - VJ > > On Fri, May 30, 2008 at 12:18 PM, James W. Walker <[EMAIL PROTECTED]> >> 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 (Cocoa-dev@lists.apple.com) > > 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: > http://lists.apple.com/mailman/options/cocoa-dev/vijay.malhan%40gmail.com > > This email sent to [EMAIL PROTECTED] > _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) 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: http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to [EMAIL PROTECTED]