Я пытаюсь создать представление вложенной коллекции. Сначала я сделал для одного уровня.
Создал класс модели данных со строкой 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 не должен быть нулевым. Как мне решить эту проблему?