NSTableView 内的 NSCollectionView(与相关实体绑定)

Posted

技术标签:

【中文标题】NSTableView 内的 NSCollectionView(与相关实体绑定)【英文标题】:NSCollectionView inside NSTableView (Binding with related entities) 【发布时间】:2013-08-18 11:49:12 【问题描述】:

我有以下核心数据设置。

Data Setup

我创建了一个名为“SongsInMedleys”的数组控制器,它被配置为包含具有特定 medleyid 的 SongsInMedleys 的内容。

我创建了一个基于视图的 Tableview,它绑定到 SongsInMedleys 数组控制器。

这很好,我已经设法通过绑定到表格单元视图并在模型键路径中使用 objectValue.withSongs.title 来在标签中设置歌曲标题。

现在我的问题:

我想在表格单元视图中创建一个集合视图,其中包含相关歌曲的所有诗句。 (objectValue.withSongs.withVerses)

对我如何做到这一点有任何建议吗???

我正在尝试创建的模型: Model

【问题讨论】:

您是否设置了一个 treeController,将其内容绑定到该键路径,并将该单元格中的绑定设置为树控制器? 不,我没有。我将尝试研究树控制器的工作原理。 【参考方案1】:

经过一番研究,我放弃了尝试在 tableview 中添加一个集合视图。 我在NSTableCellView的子类中手动添加了我的诗句

-(void) setObjectValue:(id)objectValue 

    if (objectValue != nil)
    
    [super setObjectValue:objectValue];

    SongsInMedleys *Sim = objectValue;
    Songs *song = Sim.withSongs;

    scrollView *scrollview = [[scrollView alloc] initWithFrame:NSMakeRect(10,5,[self frame].size.width-30,145)];

    int addverses = 0;

    for (VersesInSongs *verse in song.withVerses)
    
        if ([verse.lyric length] > 0) 
            addverses += 1;
        

    

    NSView *view = [[NSView alloc] initWithFrame:NSMakeRect(5, 10, ((addverses * (169+5))+5), 140)];


    int x = 5;

    NSSet *Verses = song.withVerses;
    NSSortDescriptor *sortVerses = [[NSSortDescriptor alloc] initWithKey:@"number" ascending:YES];
    NSArray *sortedVerses = [Verses sortedArrayUsingDescriptors:[NSArray arrayWithObject:sortVerses]];

    for (VersesInSongs *verse in sortedVerses)
    
         if ([verse.lyric length] > 0) 
             verseBox *box = [[verseBox alloc] initWithFrame:NSMakeRect(x, 10, 169, 130)];

             [box setSong:song];
             [box setVerse:verse];
             [view addSubview:box];

             x = x + 169+5;
         

    
    [scrollview setDocumentView:view];
    [self addSubview:scrollview];
    

【讨论】:

得出的结论是没有办法将集合放在表格视图单元格中吗?

以上是关于NSTableView 内的 NSCollectionView(与相关实体绑定)的主要内容,如果未能解决你的问题,请参考以下文章

tableCellView 内的 NSButton:如何对基于视图的 NSTableView/NSArrayController 使用“动作调用”

使用核心数据存储对 NSTableView 的拖放支持

拖出 NSTableView 以移除

NSTableView:创建“重叠”行

NSTableView 意外调整大小

NSTableView 委托不工作/不填充单元格