Sorting Bound Data in NSTableColumn using IB binding.
Keys: NSTableColumn , sorting, NSArrayController, Content Set
A contentSet serves like a data source for a TableColumn
This deals with a SplitView with two single column NSTableViews The names of the TableViews are BookCategory and Books. The Books Table has a single column with book_titles. The Class BookCategory has a one to many relationship to Book.
The BookCategory Table is sorted at load using:
@implementation MyBookCategoryController
- (id)init
{
self = [super init];
if (self) {
// Initialization code here.
NSSortDescriptor *descript =
[NSSortDescriptor sortDescriptorWithKey:@"name"
ascending:YES selector:@selector(caseInsensitiveCompare:)];
[self setSortDescriptors:[[NSArray arrayWithObject:descript] autorelease] ];
}
return self;
}
This same approach fails to sort the BookTitle table at load. !!
The BookTitle table/column loads unsorted.
For the TableColumn the Attributes Inspector has
Sort Key:title
Selector: caseInsensitiveCompare:
Order: Ascending
This appears to enable the sorting when one clicks on the column header.
I want the data sorted when the view loads.
The binding inspector for this book_title column has:
Value : BookCategoryArrayController.arrangedObjects.name
The BookTitleArrayController in binding inspector shows
Content Set: Book Category ArrayController.selection.books
To restate the problem, the tableview with the book titles load unsorted. It sorts only after the user's FIRST click on the column header.
Say there are three book categories Art, History, Sports. When the app loads the left table in the splitview is sorted, that is :
Art
History
Sports
When the user selects ANY category, titles for all books in the category appear in the right tableView but unsorted. If the user clicks on the Header of the book_title TableColumn the initial sorting is done on the column. Thereafter the selection of ANY book category causes a sorted display of book_titles in the right tableView. That is, ONLY the first selection of a category results in an Unsorted book title list.
Thanks a lot for reading, Mark