控制器:
新建LIProductViewController : UICollectionViewController
LISettingItem *MoreNetease = [LISettingArrowItem itemWithIcon:@"MoreNetease" title:@"产品推荐" destVcClass:[LIProductViewController class]];
在ILSettingTableViewController.m中
//
// ILProductViewController.m
// ItheimaLottery
//
// Created by apple on 14-9-10.
// Copyright (c) 2014年 itcast. All rights reserved.
//
#import "ILProductViewController.h"
#import "ILProduct.h"
#import "ILProductCell.h"
@interface ILProductViewController ()
@property (nonatomic, strong) NSMutableArray *products;
@end
@implementation ILProductViewController
static NSString *ID = @"product";
- (NSMutableArray *)products
{
if (_products == nil) {
_products = [NSMutableArray array];
NSString *fileName = [[NSBundle mainBundle] pathForResource:@"products.json" ofType:nil];
NSData *data = [NSData dataWithContentsOfFile:fileName];
NSArray *jsonArr = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
for (NSDictionary *dict in jsonArr) { //付给数据给模型
ILProduct *product = [ILProduct productWithDict:dict];
[_products addObject:product];
}
}
return _products;
}
/*
使用UICollectionView
第一步:必须有布局
第二部:cell必须自己注册
*/
- (id)init
{
// 创建流水布局
UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init];
// 每一个cell的尺寸
layout.itemSize = CGSizeMake(80, 80);
// 垂直间距
layout.minimumLineSpacing = 10;
// 水平间距
layout.minimumInteritemSpacing = 0;
// 内边距
layout.sectionInset = UIEdgeInsetsMake(10, 0, 0, 0);
return [super initWithCollectionViewLayout:layout];
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
// 注册UICollectionViewCell,如果没有从缓存池找到,就会自动帮我们创建UICollectionViewCell
UINib *xib = [UINib nibWithNibName:@"ILProductCell" bundle:nil];//nil 就相当于nvbandle mainbundle
[self.collectionView registerNib:xib forCellWithReuseIdentifier:ID];
// [self.collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:ID];
self.collectionView.backgroundColor = [UIColor whiteColor];
}
// 数据源
- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView
{
return 1;
}
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
{
return self.products.count;
}
// 返回每一个cell长什么样
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
ILProductCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:ID forIndexPath:indexPath];
// 获取模型
ILProduct *p = self.products[indexPath.item];
cell.product = p;
return cell;
}
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
{
ILProduct *p = self.products[indexPath.item];
NSLog(@"点击了---%@",p.title);
}
@end
模型:
ILProduct.h:
#import <Foundation/Foundation.h>
/*
{
"title": "网易电影票",
"id": "com.netease.movie",
"url": "http://itunes.apple.com/app/id583784224?mt=8",
"icon": "movie@2x.png",
"customUrl": "movieticket163"
},
*/
@interface ILProduct : NSObject
@property (nonatomic, copy) NSString *title;
@property (nonatomic, copy) NSString *ID;
@property (nonatomic, copy) NSString *url;
@property (nonatomic, copy) NSString *icon;
@property (nonatomic, copy) NSString *customUrl;
+ (instancetype)productWithDict:(NSDictionary *)dict;
@end
ILProduct.m:
#import "ILProduct.h"
@implementation ILProduct
+ (instancetype)productWithDict:(NSDictionary *)dict{
ILProduct *product = [[ILProduct alloc] init];
product.title = dict[@"title"];
product.icon = dict[@"icon"];
product.url = dict[@"url"];
product.customUrl = dict[@"customUrl"];
product.ID = dict[@"id"];
return product;
}
- (void)setIcon:(NSString *)icon
{
_icon = [icon stringByReplacingOccurrencesOfString:@"@2x.png" withString:@""];
}
@end
view:
#import <UIKit/UIKit.h>
ILProductCell.h:
@class ILProduct;
@interface ILProductCell : UICollectionViewCell
@property (nonatomic, strong) ILProduct *product;
@end
ILProductCell.m:
#import "ILProductCell.h"
#import "ILProduct.h"
@interface ILProductCell()
@property (weak, nonatomic) IBOutlet UIImageView *imageView; //
@property (weak, nonatomic) IBOutlet UILabel *label; //xib的label指定为他
@end
@implementation ILProductCell
- (void)awakeFromNib
{
_imageView.layer.cornerRadius = 10;
_imageView.clipsToBounds = YES;
}
- (void)setProduct:(ILProduct *)product
{
_product = product;
NSLog(@"%@",product.icon);
UIImage *image = [UIImage imageNamed:@"movie@2x.png"];
NSLog(@"%@",image);
_imageView.image = [UIImage imageNamed:product.icon];
_label.text = product.title;
}
@end
xib: