我正在尝试在NSTableView中显示一个NSTableView。这是一个类似iTunes的专辑/曲目视图。这里有10张专辑的列表,每张专辑都有一些曲目。我想在外部的表视图中显示专辑,在内部显示每个专辑的曲目。
第一个NSTableView绑定到一个NSArrayController。数组中的每个对象都有自己的“曲目”NSArrayController,但是我不知道如何告诉“曲目”NSTableView它的内容来自“曲集”NSTableView的一个属性。
发布于 2014-11-13 23:19:19
如果我没理解错的话,嵌套数组控制器的源内容来自所有者表单元格的objectValue。因此,您不能将数组控制器内容源设置为表单元格的objectValue。我正在做类似的事情,我想根据对象值过滤数组内容
我正在做的,看起来是有效的,是为你的嵌套表格单元格视图创建一个单独的nib文件,并带有它自己的nstablecellview子类。在nib中包含数组控制器,并在单元格视图子类中创建到它的出口。
在tables视图控制器的viewDidLoad方法中将其注册到表视图中:
NSNib *cellView = [[NSNib alloc] initWithNibNamed:@"MyTableCellView" bundle:nil];
[myTableView registerNib:cellView forIdentifier:@"myTableCellView"];然后,在单元格视图子类的awakeFromNib方法中,手动进行需要对象值的绑定:
[self.arrayController bind:@"contentSet"
toObject:self
withKeyPath:@"objectValue.tracks"
options:nil];瞧。
请注意,使用此技术时,nib文件的文件所有者不是nstablecellview子类,而是表视图的视图控制器。
发布于 2014-11-11 03:36:10
问题在于不理解MVC模式(模型-视图-控制器)。视图的内容从不来自另一个视图,它通过控制器来自模型对象。每个表视图的内容总是来自一个NSObjectController,或者像NSArrayController这样的子类。基本上,有两种解决方案:
第三种解决方案是使用带有NSOutlineView的NSTreeController,但是大纲视图和树控制器是出了名的难以使用。
https://stackoverflow.com/questions/23575099
复制相似问题