使用IB绑定在NSTableColumn中对绑定数据进行排序。
键:NSTableColumn,排序,NSArrayController,内容集
contentSet就像TableColumn的数据源
这涉及一个带有两个单列NSTableViews的SplitView TableView的名称是BookCategory和 图书。 Books Table有一个包含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
重述问题,带有书名的tableview 加载未分类。它只在用户第一次点击后排序 列标题。
假设有三种书籍类别艺术,历史,体育。 当应用加载时,splitview中的左表被排序, 那就是:
Art
History
Sports
当用户选择任何类别时,所有书籍的标题 在类别中出现在右侧tableView但未排序。 如果用户单击book_title TableColumn的Header 初始排序在列上完成。此后 任何书籍类别的选择都会导致排序显示 右侧tableView中的book_titles。也就是说,只有第一个 选择类别会导致未排序的书名列表。
非常感谢阅读,Mark
答案 0 :(得分:0)
这是最终对我有用的概述。
Sorting with CategoryArrayController (NSArrayController)
Bindings Inspector
Content Set Bind to: CategoryArrayController.selection.books
SortDescriptors Bind to: ShareUserDefaultsController
Controller Key: values
sortDescriptors (note: exclamation point)
NSUnarchiveFromData
Shared User Defaults Controller
Referencing Outlets
userDefaultsController -- AppController (C:AppController)
Referencing Bindings
values.sortDescriptors -- Sort Descriptors Rx Array Controller (C:NSArrayController)
-- Sort Descriptors Category Array Controller (C:NSArrayController)
Clicking on Category Header does no sort. Selects all in Cats, and empties Recipe Table
Comments on the above welcome.
TableViewCat (NSTableController)
Attributes Inspector
TableView
Selection
Empty,Column,Type Select
Control
State.Enabled
Connections Inspec
None
Bindings Inspec
None
TableColumn -Category (NSTableColumn)
Attributes Inspec
Sort Key : None
Bindings Inspec
Value -- Category Array Controller.arrangedObjects.name
Sorting with RxArrayController (C:NSArrayController)
Attributes Inspec
Array Controller: 1-5 of 6
Object Controller
EntityName: Recipe
Prepares Content
Editable
Connections Inspector
Referencing Bindings
arrangedObjects.name -- Value - Table Column Recipe
selectedObjects -- Double Click Argument - Table View Book
Bindings Inspector
Controller Content
Content Set
Category Array Controller.selection.books
Controller Content Parameters
Sort Descriptors Bind to: ShareUserDefaultsController
Controller Key: values
sortDescriptors (note: exclamation point)
NSUnarchiveFromData
Parameters
Managed Object Context(App Delegate.manangedObjectContext
TableView Book (NSTableView)
Attributes Inspector
TableView
Selection Empty,Column,Type Select
Control
State.Enabled
Connections Inspec
Bindings
DoubleClick Argument -- Book Array Controller.selectedObjects
Double Click Target -- App Delegate.self
Bindings Inspec
Double Click Argument (Book Array Controller.selectedObjects)
Double Click Target (App Delegate.self)
Bind To: App Delegate
Model Key Path: self (Repeats ?)
Selector Name: newBookAction:
Conditionally Sets Enabled
TableColumn - Book (NSTableColumn)
Attributes Inspec
Sort Key : None
Connections Inspec
Bindings
Value -- Book Array Controller.arrangedObjects.name
Bindings Inspec
Value -- Book Array Controller.arrangedObjects.name