首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSTableView中的Cocoa绑定NSTableView

NSTableView中的Cocoa绑定NSTableView
EN

Stack Overflow用户
提问于 2014-05-10 06:49:02
回答 2查看 787关注 0票数 2

我正在尝试在NSTableView中显示一个NSTableView。这是一个类似iTunes的专辑/曲目视图。这里有10张专辑的列表,每张专辑都有一些曲目。我想在外部的表视图中显示专辑,在内部显示每个专辑的曲目。

第一个NSTableView绑定到一个NSArrayController。数组中的每个对象都有自己的“曲目”NSArrayController,但是我不知道如何告诉“曲目”NSTableView它的内容来自“曲集”NSTableView的一个属性。

EN

回答 2

Stack Overflow用户

发布于 2014-11-13 23:19:19

如果我没理解错的话,嵌套数组控制器的源内容来自所有者表单元格的objectValue。因此,您不能将数组控制器内容源设置为表单元格的objectValue。我正在做类似的事情,我想根据对象值过滤数组内容

我正在做的,看起来是有效的,是为你的嵌套表格单元格视图创建一个单独的nib文件,并带有它自己的nstablecellview子类。在nib中包含数组控制器,并在单元格视图子类中创建到它的出口。

在tables视图控制器的viewDidLoad方法中将其注册到表视图中:

代码语言:javascript
复制
NSNib *cellView = [[NSNib alloc] initWithNibNamed:@"MyTableCellView" bundle:nil];
[myTableView registerNib:cellView forIdentifier:@"myTableCellView"];

然后,在单元格视图子类的awakeFromNib方法中,手动进行需要对象值的绑定:

代码语言:javascript
复制
[self.arrayController bind:@"contentSet"
                  toObject:self
               withKeyPath:@"objectValue.tracks"
                   options:nil];

瞧。

请注意,使用此技术时,nib文件的文件所有者不是nstablecellview子类,而是表视图的视图控制器。

票数 2
EN

Stack Overflow用户

发布于 2014-11-11 03:36:10

问题在于不理解MVC模式(模型-视图-控制器)。视图的内容从不来自另一个视图,它通过控制器来自模型对象。每个表视图的内容总是来自一个NSObjectController,或者像NSArrayController这样的子类。基本上,有两种解决方案:

  • 将“曲目”表视图绑定到“相册”数组控制器的选择,并将其绑定到“相册”数组控制器的选择。将'tracks‘表视图绑定到'tracks’数组控制器

第三种解决方案是使用带有NSOutlineView的NSTreeController,但是大纲视图和树控制器是出了名的难以使用。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23575099

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档