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

时间:2013-08-18 11:49:12

标签: macos core-data nstableview nscollectionview

我有以下核心数据设置。

Data Setup

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

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

这很好用,我通过绑定到Table Cell View并在Model Key Path中使用objectValue.withSongs.title设法将标题设置为标签。

现在我的问题:

我想在Table Cell View中创建一个集合视图,其中包含相关歌曲的所有经文。 (objectValue.withSongs.withVerses

有关如何做到这一点的任何建议???

我想要创建的模型: Model

1 个答案:

答案 0 :(得分:0)

经过一番研究后,我放弃了尝试在tableview中添加一个集合视图。 Insted我在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];
    }
}