我正在编写一个带有 UICollectionViewController 的应用程序。
我用故事板创建了布局。子类化 UICollectionViewController 并在 IB 中链接两者。我还给它一个 Storyboard ID“ImageCollectionViewController”。
我还对 UICollectionViewCell 进行了子类化,并将其与 IB 中的原型单元链接起来,并为其赋予了标识符“ImageCell”。
这是我用来创建自定义 UICollectionViewController 的构造函数:
-(id)initWithGroup:(CatalogGroup*)group
{
UIStoryboard* storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPad" bundle: nil];
self = [storyboard instantiateViewControllerWithIdentifier:@"ImageCollectionViewController"];
if (self) {
[self setGroup:group];
// Register the type of cell for collection view
[self.collectionView registerClass:[ImageCell class] forCellWithReuseIdentifier:@"ImageCell"];
}
return self;
}
现在这一切似乎都奏效了。所有的委托方法都在 collectionViewController 中被调用。例如:
-(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
{
id <NSFetchedResultsSectionInfo> sectionInfo = [[self fetchedResultsController] sections][section];
return [sectionInfo numberOfObjects];
}
我的单元格正在初始化并通过以下方式传回:
-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
static NSString* identifier = @"ImageCell";
ImageCell* cell = [collectionView dequeueReusableCellWithReuseIdentifier:identifier forIndexPath:indexPath];
ImageItem* item = [[self fetchedResultsController].fetchedObjects objectAtIndex:indexPath.row];
if(cell) {
// Set up label
cell.label.lineBreakMode = NSLineBreakByCharWrapping;
cell.label.numberOfLines = 0;
[cell.label setText:item.labelText];
NSData* imageData = item.imageData;
UIImage* image = [UIImage imageWithData:imageData];
UIImageView* imageView = [[UIImageView alloc] initWithImage:image];
[cell setImageView:imageView];
}
return cell;
}
然而,当我将视图控制器推入堆栈时。没有细胞吗?我的堆栈有什么问题吗?
我在 IB 中为 CollectionView 设置的背景颜色正在显示,所以我相信它正在正确创建。单元格被初始化。委托方法被调用,所以我不知道从哪里开始调试。