【发布时间】:2013-10-21 22:45:56
【问题描述】:
使用 IB 绑定对 NSTableColumn 中的绑定数据进行排序。
键:NSTableColumn、排序、NSArrayController、内容集
contentSet 就像 TableColumn 的数据源
这处理带有两个单列 NSTableViews 的 SplitView 表视图的名称是 BookCategory 和 图书。 Books 表有一个带有 book_titles 的列。 Class BookCategory 具有一对多的关系 预订。
BookCategory 表在加载时使用:
@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
这似乎是在单击时启用排序 在列标题上。
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
为了重申问题,带有书名的表格视图 加载未排序。只有在用户第一次点击 列标题。
假设有艺术、历史、体育三类书籍。 当app在splitview中加载左表时进行排序, 那就是:
Art
History
Sports
当用户选择任何类别时,所有书籍的标题 在类别中出现在右侧的 tableView 但未排序。 如果用户点击 book_title TableColumn 的 Header 初始排序是在列上完成的。此后 选择任何书籍类别都会导致排序显示 右侧 tableView 中的 book_titles。也就是说,只有第一个 选择一个类别会产生一个未排序的书名列表。
非常感谢您的阅读,马克
【问题讨论】:
标签: sorting set nsarraycontroller nstablecolumn