我正在尝试在 NSTableView 内显示 NSTableView。这是一个类似 iTunes 的专辑/轨道 View 。所以有一个包含 10 张专辑的列表,每个专辑都有一些轨道。我想在外部表格 View 中显示专辑,并在内部表格 View 中显示每个专辑的轨道。
第一个 NSTableView 绑定(bind)到 NSArrayController。数组中的每个对象都有自己的“tracks”NSArrayController,但我不知道如何告诉“tracks”NSTableView其内容来自“album”NSTableView的属性。
最佳答案
如果我理解正确的话,嵌套数组 Controller 的源内容来自所有者表单元格的objectValue。所以你不能将数组 Controller 内容源作为表格单元格的objectValue。我正在做类似的事情,因为我想根据对象值过滤数组内容
我正在做的事情(似乎有效)是为嵌套表格单元格 View 创建一个单独的 nib 文件,并使用它自己的 nstablecellview 子类。将数组 Controller 包含在 Nib 中,并在单元 View 子类中创建它的导出。
在 TableView Controller 的 viewDidLoad 方法中将其注册到 TableView 中:
NSNib *cellView = [[NSNib alloc] initWithNibNamed:@"MyTableCellView" bundle:nil];
[myTableView registerNib:cellView forIdentifier:@"myTableCellView"];
然后,在单元 View 子类的 awakeFromNib 方法中,手动进行需要对象值的绑定(bind):
[self.arrayController bind:@"contentSet"
toObject:self
withKeyPath:@"objectValue.tracks"
options:nil];
瞧。
请注意,使用此技术时,nib 文件的文件所有者不是您的 nstablecellview 子类,而是 TableView 的 View Controller 。
关于macos - cocoa 在 NSTableView 内绑定(bind) NSTableView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23575099/