• 开始考虑好一点点时间,因为一般的都是用xib,或者storyboard来写的.这次用纯代码...废话较多请看

  • 首先把storyboard干掉,工程里面的main干掉

  • 由于干掉了storyboard则启动的控制器要在Appdelegate中指定


#import "AppDelegate.h"
#import "ViewController.h"
@interface AppDelegate () @end @implementation AppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
UICollectionViewFlowLayout * fly = [UICollectionViewFlowLayout new];
fly.itemSize = CGSizeMake(50, 50);
fly.sectionInset = UIEdgeInsetsMake(50, 10, 0, 10);
//创建collectionViewController并设置布局参数
ViewController * vc = [[ViewController alloc] init];
self.window.rootViewController = vc;
UICollectionView * colView = [[UICollectionView alloc] initWithFrame:[UIScreen mainScreen].bounds collectionViewLayout:fly];
vc.collectionView = colView;
//必须注册可重用id
[vc.collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"Cell"];
[vc.collectionView setCollectionViewLayout:fly];
vc.collectionView.backgroundColor = [UIColor blueColor];
[self.window makeKeyAndVisible];
return YES; }
  • 上述代码中,一定要在创建viewcontroller的时候给它的collectionView指定布局参数,否则一直会报错,报错原因就是:"请给UICollectionView初始化一个non-nil的layout(布局参数)",如果报这个错误而你在控制的.m文件中viewDidload中给self.CollectionView 设置并且初始化了一个布局参数,再次运行程序依然会报上面的错误.
  • 所以创建控制器的时候给控制器.collectionView指定布局参数.
  • 指定布局参数后还会报错,说:请给cell设置一个可重用ID,当你在viewdidload中注册了一个Id后依然报错,打全局断点会崩到数据源第三个方法中...此时正确的解决方式就是,在Appdelegate中创建控制器的时候让控制器的.collectionView register 注册一个可重用id.此时再运行正确.
  • 注意点1: 此时打断点在Viewcontroller中的viewdidload方法,----结果是根本不会执行viewdidload,所以它才报错让你注册一个可重用id,如果在Appdelegate中的控制器的.collectionView注册一个可重用ID则 解决.

#import "ViewController.h" @interface ViewController ()<UICollectionViewDataSource,UICollectionViewDelegate,UICollectionViewDelegateFlowLayout> /** 布局参数 */
//@property (nonatomic, strong) UICollectionViewFlowLayout *flowLayout; @end @implementation ViewController //此时懒加载没有用 因为viewdidload中的方法根本不会执行
//-(UICollectionViewFlowLayout *)flowLayout{
//
// if (_flowLayout == nil) {
// _flowLayout = [[UICollectionViewFlowLayout alloc] init];
// }
// return _flowLayout;
//} //不执行---
- (void)viewDidLoad {
[super viewDidLoad]; // self.view.backgroundColor = [UIColor whiteColor];
// self.collectionView.dataSource = self;
// self.collectionView.delegate = self;
// [self.collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"Cell"];
} -(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath{ NSLog(@"dianji");
} - (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
} #pragma mark <UICollectionViewDataSource> - (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {
return 100;
} - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
static NSString * const reuseIdentifier = @"Cell";
UICollectionViewCell * cell = [collectionView dequeueReusableCellWithReuseIdentifier:reuseIdentifier forIndexPath:indexPath];
cell.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"Snip20160422_5"]];
return cell;
} @end

综上: 纯 代码创建collectionView,以及collectionVIewController,在哪里创建的collectionViewcontroller就在哪里设置布局参数以及cell的可重用ID即可. 切记切记...demo地址:http://pan.baidu.com/s/1i4KLlbv

最新文章

  1. 『TCP/IP详解——卷一:协议』读书笔记——18
  2. java 面试每日一题4
  3. Android TextView结合SpannableString使用
  4. 一个ASP函数库
  5. iOS:翻页效果
  6. 【C#枚举】根据EnumName获取Value
  7. poj3159 Candies(差分约束)
  8. docker在Centos上的安装
  9. 百度广告联盟api probuf协议对接
  10. C语言中free()函数释放struct结构体中的规律
  11. 第6章 演示服务器和测试 - Identity Server 4 中文文档(v1.0.0)
  12. 一个spinner控件使用的实例
  13. database锁实现
  14. Java通过SMS短信平台实现发短信功能
  15. 【PMP】商业论证与效益管理文件
  16. PyCharm 2018 最新激活方式总结(最新最全最有效!!!)
  17. Chapter 3 Phenomenon——8
  18. Angular2学习笔记一
  19. fortran打开文件“” /dde错误
  20. DataTables 固定列时实现 hover

热门文章

  1. ACM 水池数目
  2. InterBase数据库迁移到MySQL(数据导入)
  3. POJ 3320 尺取法,Hash,map标记
  4. ffmpeg解码
  5. 李洪强漫谈iOS开发[C语言-050]-doWhile统计用户输入字符
  6. asp.net 网站开发流程总结
  7. github提交失败并报错java.io.IOException: Authentication failed:
  8. [CareerCup] 17.10 Encode XML 编码XML
  9. android-数据存储之手机内部file存储
  10. java 反取字符串