这几天一直在纠结一件事情,搞的我是食不能安,寝不能睡啊;

当程序员在面对一个自己解决不了的问题的时候,也许是该程序员开始成长的时候 、、、

先说说,事件的起因:

之前是源于在网上下载的文档,使用xib自定义UITableViewcell的小文档,当时想的情况是,xib挺简单的,结合使用的效果也不错,于是就在小项目之间做了一下,

但是,之后就出现了各种不服、

什么样的都有,连续几天,脑子里都在想这个事情,加上项目有点大,有时候程序卡的不行不行的,直到此时,在历时3个下午的时间段里才解决,

首先我们要明确两个ID:

一个是storyBoardID:

一个是UICollectionViewcellID:这个ID是用来找到以使来重用的

注意:使用xib的时候是不需要Id的  直接使用其名字(不带后缀),千万不要和storyBoard搞混了,我就是当时搞混了,导致浪费这么长时间。

接下来是使用步骤:

1.写一个UICollectionView

//静态字符串
static NSString *cellID = @"id"; //创建CollectionView
- (void)addCollectionView{
UICollectionViewFlowLayout *layOut = [[UICollectionViewFlowLayout alloc]init];
layOut.scrollDirection = UICollectionViewScrollDirectionVertical;
// 行间距
layOut.minimumInteritemSpacing = 20;
// 组间距
layOut.minimumLineSpacing = 20;
UICollectionView *bookCollectionView = [[UICollectionView alloc]initWithFrame:self.view.frame collectionViewLayout:layOut];
bookCollectionView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"BookingbackG"]];
bookCollectionView.dataSource = self;
bookCollectionView.delegate = self;
[self.view addSubview:bookCollectionView];
// 注册cellID,千万别忘了
[bookCollectionView registerClass:[CustomCollectionViewCell class] forCellWithReuseIdentifier:cellID]; }

2.自定义cell的类

3.开始规划xib,让其继承于自定义的cell类名。

4.联系控件

5.重写自定义方法

- (instancetype)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if (self) {
self = [[NSBundle mainBundle]loadNibNamed:@"collectionViewcell" owner:self options:nil].lastObject;
} return self;
}

注意:这个读取xib的东西最好要放在这里,我就是因为看别人文档中。放在了创建cell的那个位置结果一直找不到错误。

6.在UICollectionView创建cell,该重用ID重用ID,千万不要搞混淆。

然后各种精美的cell新鲜出炉

麻麻再也不担心我为了cell去计算frame了

转载自http://www.cnblogs.com/Biaoac/p/5356614.html

IOS开发之xib解决自定义CollectionCell问题的更多相关文章

  1. iOS开发之Xib和storyboard对比

    相同点: (2)都用来描述软件界面 (2)都用Interface Builder工具来编辑 不同点: (1)Xib是轻量级的,用来描述局部的UI界面 (2)Storyboard是重量级的,用来描述整个 ...

  2. iOS开发之 Xcode6 添加xib文件,去掉storyboard的hello world应用

    iOS开发之  Xcode6.1创建仅xib文件,无storyboard的hello world应用 由于Xcode6之后,默认创建storyboard而非xib文件,而作为初学,了解xib的加载原理 ...

  3. iOS开发之loadView、viewDidLoad及viewDidUnload的关系

    iOS开发之loadView.viewDidLoad及viewDidUnload的关系 iOS开发之loadView.viewDidLoad及viewDidUnload的关系    标题中所说的3个方 ...

  4. iOS开发之Xcode常用调试技巧总结

    转载自:iOS开发之Xcode常用调试技巧总结 最近在面试,面试过程中问到了一些Xcode常用的调试技巧问题.平常开发过程中用的还挺顺手的,但你要突然让我说,确实一脸懵逼.Debug的技巧很多,比如最 ...

  5. 李洪强IOS开发之iOS好项目收集

    李洪强IOS开发之iOS好项目收集 在这里收集一些最近出现的比较实用好玩的框架或者项目,会不断更新 项目 简述 日期 SCTableViewCell 类似与QQ侧滑删除Cell的Demo 201501 ...

  6. 李洪强iOS开发之RunLoop的原理和核心机制

    李洪强iOS开发之RunLoop的原理和核心机制 搞iOS之后一直没有深入研究过RunLoop,非常的惭愧.刚好前一阵子负责性能优化项目,需要利用RunLoop做性能优化和性能检测,趁着这个机会深入研 ...

  7. iOS开发之Socket通信实战--Request请求数据包编码模块

    实际上在iOS很多应用开发中,大部分用的网络通信都是http/https协议,除非有特殊的需求会用到Socket网络协议进行网络数 据传输,这时候在iOS客户端就需要很好的第三方CocoaAsyncS ...

  8. iOS开发之UIImage等比缩放

    iOS开发之UIImage等比缩放 评论功能真不错 评论开通后,果然有很多人吐槽.谢谢大家的支持和关爱,如果有做的不到的地方,还请海涵.毕竟我一个人的力量是有限的,我会尽自己最大的努力大家准备一些干货 ...

  9. iOS 开发之Block

    iOS 开发之Block 一:什么是Block.Block的作用 UI开发和网络常见功能的实现回调,按钮事件的处理方法是回调方法. 1.     按钮事件 target action 机制. 它是将一 ...

随机推荐

  1. POJ 2296 Map Labeler (2-Sat)

    Map Labeler Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 1267   Accepted: 409 Descri ...

  2. C#代码规范-编程秘笈

    原文地址:https://www.cnblogs.com/zzp0320/p/6949973.html 1.引言 本文是一套面向C# programmer和C# developer进行开发所应遵循的开 ...

  3. numpy 基于数值范围创建ndarray()

    基于数值范围创建函数创建ndarray 1 numpy.arange arange([start=0,] stop[, step=1,][, dtype=None]) >>> np. ...

  4. idea13注册机

    public class Keygen { /** * @param s * @param i * @param bytes * @return */ public static short getC ...

  5. MySQL -- innodb中cardinality是如何统计的

    cardinality是放在mysql存储引擎层进行的.采用的是采样取值.在innodb存储引擎中,cardinality统计信息的更新发生在两个操作中:insert和update 更新策略为:-表中 ...

  6. Could not connect to Redis at xxx.xxx.xxx.xxx:6379: Connection refused

    开发发来消息说测试环境的redis无法登录: # redis-cli -p 6379 -h xxx.xxx.xxx.xxx Could not connect to Redis at xxx.xxx. ...

  7. 分布式配置 tachyon 并执行Hadoop样例 MapReduce

    ----------此文章.笔者按着tachyon官网教程进行安装并记录. (本地安装tachyon具体解释:http://blog.csdn.net/u012587561/article/detai ...

  8. linux卸载自带jdk

    centos 6.5系统 java -version: rpm -qa | grep jdk rpm -qa | grep gcj: 使用: yum -y remove java-1.5.0-gcj- ...

  9. javascript刷新页面代码

    原文链接:http://caibaojian.com/javascript-refresh-page.html reload 方法,该方法强迫浏览器刷新当前页面. 语法:location.reload ...

  10. RGB 常用颜色对照表

    http://blog.csdn.net/xiaoting451292510/article/details/8226325