在多个集合视图中重用单个UICollectionViewCell

mno*_*rt9 2 objective-c storyboard ios uicollectionview uicollectionviewcell

我有多个集合视图需要使用相同的原型单元格.现在,我在故事板中复制每个集合视图中的原型单元格(如下所示).这不是很干,在对单元格进行故事板更改时会变得很痛苦.

是否可以在故​​事板中的一个位置定义单元格?

在此输入图像描述

或者我尝试只使用1个集合视图,但我无法获得单元格堆叠和垂直滚动的3列布局,因此我移动到3个集合视图.

Rob*_*egg 5

是的,这是可能的.我从不在故事板中设计单元格(UITableViewUICollectionView单元格).有可能,您需要重复使用它们,就像这里的情况一样.

首先,创建一个新视图("文件">"新建">"文件"),然后从"用户界面"部分中选择"视图"选项.你选择哪个设备系列并不重要,所以给它一个名字(我叫我的NibCell).它将在画布中打开 - 第一项工作是删除现有视图,并从对象浏览器中拖动Collection View Cell.

您还可以创建类的子UICollectionViewCell类,并将其设置为接口构建器中的xib文件的类.一旦你创建了xib并将元素连接到自定义类 - 你需要在你的类中注册它(就像UICollectionView在其中一样)(不要忘记首先将它导入自定义单元类!)

UINib *cellNib = [UINib nibWithNibName:@"NibCell" bundle:nil];
[self.collectionView registerNib:cellNib forCellWithReuseIdentifier:@"cvCell"];
Run Code Online (Sandbox Code Playgroud)

你会像这样使用它:

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

    static NSString *cellIdentifier = @"cvCell";

    CVCell *cell = (CVCell *)[collectionView dequeueReusableCellWithReuseIdentifier:cellIdentifier forIndexPath:indexPath];
    //Setup the cell for use 
    return cell;

}
Run Code Online (Sandbox Code Playgroud)

这通常就是它的全部内容.希望这可以帮助!