如何在 iOS 中使用 Storyboard 创建自定义 UICollectionViewCell?

Posted

技术标签:

【中文标题】如何在 iOS 中使用 Storyboard 创建自定义 UICollectionViewCell?【英文标题】:How to create custom UICollectionViewCell using Storyboard in iOS? 【发布时间】:2015-07-15 04:33:14 【问题描述】:

我有一个UIViewController,其中我有一个UICollectionViewUICollectionView 的单元格需要是图像,所以我知道我需要继承UICollectionViewCell 类。所以基本上,我需要一个 UIViewController,它有一个 UICollectionView,它有一个自定义的 UICollectionViewCell。我正在使用情节提要,当我需要创建自定义 UITableVieCell 时,我执行以下操作:

创建UITableViewCell的子类 将此子类设置为情节提要中UITableViewCell 的类 设置重用标识符。 在我的视图控制器实现中导入这个类,声明这个子类的一个单元格并继续。

但是当我对UICollectionViewCell 遵循相同的操作时,例如。我创建了一个名为CustomCollectionViewCell 的子类,并在cellForItemAtIndexPath 中声明它就像

CustomCollectionViewCell *cell = (CustomCollectionViewCell *)[collectionView dequeueReusableCellWithReuseIdentifier:@"Cell" forIndexPath:indexPath];

NSLog(@"%@",cell);

无论我做什么,这都会记录<UICollectionViewCell: 0x137529010; frame = (10 10; 300 164); layer = <CALayer: 0x170220880>>。我无法初始化我的自定义 UICollectionViewCell 类,因此无法添加图像。

我查看了其他 *** 答案并阅读了说不要这样做的答案:

[self.collectionView registerClass:[CustomCollectionViewCell class] forCellWithReuseIdentifier:@"Cell"];

如果我使用的是故事板,所以我将其注释掉。

所有重用标识符、出口等都已设置。我似乎找不到错误在哪里。

感谢任何帮助。

【问题讨论】:

您是否在情节提要中将CustomCollectionViewCell 设置为CollectionView 的类? 我做到了。经过进一步的测试,我意识到了这一点。当我这样做时,CustomCell *cell = [[CustomCell alloc] init]; NSLog(@"%@",[cell class]),它返回CustomCell。但是当我这样做时,cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"Cell" forIndexPath:indexPath];,它返回UICollectionViewCell 【参考方案1】:

试试这个,

Identity Inspector 中设置您的自定义collectionview 单元格类

cellForItemAtIndexPath

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath 

    CollectionViewCell *cell = (CollectionViewCell *)[collectionView dequeueReusableCellWithReuseIdentifier:@"cell" forIndexPath:indexPath];
    NSLog(@"%@", cell);
    return cell;

得到日志

<CollectionViewCell: 0x7af70000; baseClass = UICollectionViewCell; frame = (0 0; 70 69); clipsToBounds = YES; opaque = NO; layer = <CALayer: 0x7af70210>>

【讨论】:

【参考方案2】:

我想通了。

这是一个愚蠢的错误。我正在使用的重用标识符已被其他地方的不同单元格使用。更改了它,它现在可以正常工作了。

【讨论】:

以上是关于如何在 iOS 中使用 Storyboard 创建自定义 UICollectionViewCell?的主要内容,如果未能解决你的问题,请参考以下文章

iOS如何获取对带有segue的storyboard容器中嵌入的视图控制器的引用?

如何使用Storyboard创建UIPageViewController

将 iOS Storyboard 项目包含到另一个项目中?

如何在 iOS 中调用不同的 Storyboard?

在 iOS 应用程序及其扩展程序之间共享 Storyboard

为iOS8创建Launch Screen.xib(... iOS11,Swift 4和LaunchScreen.storyboard)