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

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

先说说,事件的起因:

之前是源于在网上下载的文档,使用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. RemoteDesktopManager 简单使用说明

    最近项目需要在多台window系统上,安装应用,没错,是window orz..没有了secureCRT putty等好用的窗体工具,真的挺难受的. 爱折腾的博主,百度了下,发现RemoteDeskt ...

  2. sql改写or 改成union不等价数据变多

    select count(*) from (SELECT A.* FROM (SELECT CD.*, nvl(CV.SUM_CI_BALANCE, 0) as SUM_CI_BALANCE, nvl ...

  3. CentOS 7.4 使用源码包编译安装MySQL 5.7.20

    使用yum安装的MySQL一般版本比较旧,但是运行稳定.如果想要尝试最新的功能或者需要指定特殊的功能的话,就需要手工进行编译安装了. 一.下载安装包 (一).先下载MySQL源码,网址为:https: ...

  4. C#基础第二天-作业-九九乘法表-打印星星

    一.打印九九乘法表图形为下列效果图中的三角型的一种例: 图一效果1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 1*4=4 2*4=8 3*4=12 4*4=16 1*5=5 ...

  5. Java获取请求客户端的真实IP地址

    整理网友的材料,最后有源码,亲测能解决所有java获取IP真实地址的问题 整理的这里: 1.链接1 2.链接2 JSP里,获取客户端的IP地址的方法是: request.getRemoteAddr() ...

  6. MySQL -- 在磁盘爆满后复制的状态

    事件: 由于前一天的晚上加班了.第二天又接着上班.所以精神上有点不在状态:收到客户的反馈说在slave上找不到master刚刚插入的数据: 阶段1: 遇到这事的第一感觉就是这可能是主从延时.或是sla ...

  7. 帝国cms使用自定义函数获取新闻文章数 实例分享

    原文地址:http://www.jbxue.com/cms/24337.html 介绍了帝国cms系统中通过用户自定义函数获取用户发表新闻数量的方法,主要是分享下帝国cms自定义函数功能. 在帝国cm ...

  8. webBrowser获取取Cookie不全的解决方法

    //取当前webBrowser登录后的Cookie值           [DllImport("wininet.dll", CharSet = CharSet.Auto, Set ...

  9. 期盼已久的spring-net居然有新版本2.0.1-GA

    https://github.com/spring-projects/spring-net/tree/spring-net-2.0.1-GA https://www.nuget.org/package ...

  10. RVM切换ruby版本号

    RVM是Ruby Version Manager的缩写,是一个命令行工具,它能够让你轻松地安装,管理和使用多个版本号的Ruby.不同的rails项目使用等ruby和rails版本号不一样的时候.能够使 ...