如何在 iOS 中使用 Storyboard 创建自定义 UICollectionViewCell?
Posted
技术标签:
【中文标题】如何在 iOS 中使用 Storyboard 创建自定义 UICollectionViewCell?【英文标题】:How to create custom UICollectionViewCell using Storyboard in iOS? 【发布时间】:2015-07-15 04:33:14 【问题描述】:我有一个UIViewController
,其中我有一个UICollectionView
。UICollectionView
的单元格需要是图像,所以我知道我需要继承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
为iOS8创建Launch Screen.xib(... iOS11,Swift 4和LaunchScreen.storyboard)