Представление вложенной коллекции NSCollection

Я пытаюсь создать представление вложенной коллекции. Сначала я сделал для одного уровня.

Создал класс модели данных со строкой header. В делегате приложения создан массив sectionTitle. Теперь в nib я добавил представление коллекции и контроллер массива и выполнил все привязки, следующие за этим руководство. Далее в awakeFromNib я заполнил некоторые случайные данные

- (void)awakeFromNib {
    int idx = 0;
    NSMutableArray *sectionTitle = [[NSMutableArray alloc] init];
    while (idx < 1) {
        HeaderModel *header = [[HeaderModel alloc] init];
        [header setHeader:[NSString stringWithFormat:@"Section %d", idx]];
        [sectionTitle addObject:header];
        idx++;
    }
    [self setHeaderData:sectionTitle];
}

Запуск даст мне 4 раздела. Я хочу добиться такого же макета, как этого. Название раздела, под ним другая коллекция предметов. Приведенный там ответ намекает только на использование представления вложенной коллекции.

Поэтому я добавил еще одно представление коллекции в первый прототип представления. Затем я следовал тому же подходу, что и для первого представления (с другой моделью данных и массивом).

- (void)awakeFromNib {
    int idx = 0;
    NSMutableArray *sectionTitle = [[NSMutableArray alloc] init];
    NSMutableArray *groupData = [[NSMutableArray alloc] init];
    while (idx < 1) {
        HeaderModel *header = [[HeaderModel alloc] init];
        DataModel *name = [[DataModel alloc] init];
        [header setHeader:[NSString stringWithFormat:@"Section %d", idx]];
        [name setName:[NSString stringWithFormat:@"Name %d", idx]];
        [sectionTitle addObject:header];
        [groupData addObject:name];
        idx++;
    }
    [self setHeaderData:sectionTitle];
    [self setData:groupData]; //NSCollectionView item prototype must not be nil.
}

Но теперь я получаю сообщение об ошибке Прототип элемента NSCollectionView не должен быть нулевым. Как мне решить эту проблему?


person GoodSp33d    schedule 07.11.2013    source источник
comment
Удачи в решении этого?   -  person tofutim    schedule 20.02.2014


Ответы (1)


Я только что ответил на аналогичный вопрос здесь

Но каким-то образом, вставив второй NSCollectionView с I.B, вы получите поврежденный прототип для вашего внутреннего NSCollectionViewItem. Просто попробуйте извлечь каждый связанный NSView в свой собственный .xib.

person Gomino    schedule 27.02.2014
comment
Я попытаюсь. +100 за то, что единственный, кто что-то сказал. - person tofutim; 27.02.2014