UICollectionViewController的用法1
UICollectionView 和 UICollectionViewController 类是iOS6 新引进的API,用于展示集合视图,布局更加灵活,可实现多列布局,用法类似于UITableView 和 UITableViewController 类
1.定义Cell
@interface CollectionViewCell : UICollectionViewCell
@property (strong, nonatomic) UILabel * titleLabel;
@property (strong, nonatomic) UIButton * deleButton;
@property (strong, nonatomic) UIButton * colorButton;
@property (strong, nonatomic) UILabel * numberLabel;
@end
@implementation CollectionViewCell
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
[self initializeUserInterface];
self.contentView.layer.borderWidth = 1.0f;
self.contentView.layer.borderColor = [UIColor redColor].CGColor;
}
return self;
}
- (void) initializeUserInterface {
UIView *bgView=[[UIView alloc]initWithFrame:
CGRectMake(2, 2, CGRectGetWidth(self.bounds)-35, CGRectGetHeight(self.bounds)-5)];
bgView.layer.cornerRadius=5;
bgView.tag=13;
// bgView.layer.borderColor=GARY2_COLOR.CGColor;
bgView.layer.borderWidth=1;
[self addSubview:bgView];
self.deleButton=[UIButton buttonWithType:UIButtonTypeSystem];
self.deleButton.frame=CGRectMake(CGRectGetWidth(self.bounds)-27, 2, 27, 27);
// deleBtn.backgroundColor=[UIColor orangeColor];
[self.deleButton setBackgroundImage:GETIMAGE(@"5-1处方用药_常用药_03.png") forState:UIControlStateNormal];
// self.deleButton.tag=11;
self.deleButton.hidden=YES;
[self.contentView addSubview:self.deleButton];
_titleLabel=[[UILabel alloc]initWithFrame:CGRectMake(5, 0, CGRectGetWidth(bgView.bounds)-5, 30)];
_titleLabel.font=[UIFont boldSystemFontOfSize:20];
[self.contentView addSubview:_titleLabel];
.......
}
//-----------------
@interface ViewController : UICollectionViewController
@end
@interface ViewController ()<UICollectionViewDelegateFlowLayout,UIAlertViewDelegate>
{
NSMutableArray * _dataSource;
}
- (void)viewDidLoad {
[super viewDidLoad];
_dataSource = [NSMutableArray array];
// Do any additional setup after loading the view, typically from a nib.
// self.view.backgroundColor = [UIColor whiteColor];
[self.collectionView registerClass:[CollectionViewCell class] forCellWithReuseIdentifier:@"MYCELL"];
[self.collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"LastCell"];
self.collectionView.backgroundColor = [UIColor whiteColor];
self.collectionView.dataSource = self;
self.collectionView.delegate = self;
UIButton * btn = [[UIButton alloc]initWithFrame:
CGRectMake(100, CGRectGetHeight(self.view.bounds)-100, 50, 30)];
[btn setTitle:@"Add" forState:UIControlStateNormal];
btn.tag = 11;
btn.backgroundColor = [UIColor purpleColor];
[btn addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:btn];
UIButton * dbtn = [[UIButton alloc]initWithFrame:
CGRectMake(200, CGRectGetHeight(self.view.bounds)-100, 50, 30)];
[dbtn setTitle:@"Mod" forState:UIControlStateNormal];
dbtn.tag = 12;
dbtn.backgroundColor = [UIColor purpleColor];
[dbtn addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:dbtn];
}
- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView {
return 1;
}
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{
return _dataSource.count + 1;
}
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
// for (UIView * view in self.collectionView.subviews) {
// [view removeFromSuperview];
// }
CollectionViewCell * cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"MYCELL" forIndexPath:indexPath];
// cell.tag = indexPath.row + 100;
if (indexPath.row < _dataSource.count) {
NSString * title =[_dataSource[indexPath.row] objectForKey:@"name"];
cell.titleLabel.text = title;
cell.numberLabel.text = [NSString stringWithFormat:@"%@g",title];
cell.deleButton.hidden = NO;
cell.deleButton.tag = 100 + indexPath.row;
[cell.deleButton addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];
}
else if (indexPath.row == _dataSource.count) {
UICollectionViewCell * laseCell = [collectionView dequeueReusableCellWithReuseIdentifier:@"LastCell" forIndexPath:indexPath];
UIView * lastView = [[UIView alloc]initWithFrame:cell.bounds];
laseCell.layer.borderWidth = 1;
laseCell.layer.borderColor = [UIColor greenColor].CGColor;
UILabel * lastLabel = [[UILabel alloc] initWithFrame: lastView.bounds];
lastLabel.textAlignment = NSTextAlignmentCenter;
lastLabel.text = @"点击添加新药品";
lastLabel.textColor = [UIColor grayColor];
[lastView addSubview: lastLabel];
[laseCell.contentView addSubview:lastView];
return laseCell;
}
return cell;
}
-(CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath {
return CGSizeMake(200, 150);
}
-(UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout insetForSectionAtIndex:(NSInteger)section {
return UIEdgeInsetsMake(5, 5, 5, 5);
}
//返回这个UICollectionView是否可以被选择
-(BOOL)collectionView:(UICollectionView *)collectionView shouldSelectItemAtIndexPath:(NSIndexPath *)indexPath
{
return YES;
}
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath {
NSLog(@"%@",indexPath);
//将其他cell全部变色为不可选
for (int i = 0 ; i<_dataSource.count+1 ; i++) {
NSIndexPath * mIndexPath = [NSIndexPath indexPathForItem:i inSection:0];
CollectionViewCell * mcell = (CollectionViewCell *)[collectionView cellForItemAtIndexPath:mIndexPath];
mcell.layer.borderColor = [UIColor redColor].CGColor;
}
CollectionViewCell * cell = (CollectionViewCell *)[collectionView cellForItemAtIndexPath:indexPath];
if (cell.layer.borderColor != [UIColor yellowColor].CGColor) {
cell.layer.borderWidth = 1;
cell.layer.borderColor = [UIColor yellowColor].CGColor;
} else {
cell.layer.borderColor = [UIColor redColor].CGColor;
}
//[self collectionView: self.collectionView didHighlightItemAtIndexPath:indexPath];
}
#pragma mark -UICollertionViewDelegate-
//- (void)collectionView:(UICollectionView *)collectionView didHighlightItemAtIndexPath:(NSIndexPath *)indexPath {
//
//}
//是否高亮,默认YES,否则不可点击
- (BOOL)collectionView:(UICollectionView *)collectionView shouldHighlightItemAtIndexPath:(NSIndexPath *)indexPath {
return YES;
}
#pragma mark - UIAlertViewDelegate-
-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
UITextField * tf =[ alertView textFieldAtIndex: 0];
NSMutableDictionary * myDic = _dataSource[0];
[myDic setObject:tf.text forKey:@"name"];
NSIndexPath * indexPath = [NSIndexPath indexPathForRow:0 inSection:0];
[self.collectionView reloadItemsAtIndexPaths:@[indexPath]];
}
- (void) buttonPressed:(UIButton *)button{
if (button.tag == 11) {
NSMutableDictionary * dic = [NSMutableDictionary dictionary];
[dic setObject:[NSString stringWithFormat:@"%lu",(unsigned long)_dataSource.count] forKey:@"name"];
[_dataSource addObject:dic];
[self.collectionView reloadData];
} else if (button.tag == 12) {
UIAlertView * myAlert = [[UIAlertView alloc] initWithTitle:@"修改" message:@"" delegate:self cancelButtonTitle:nil otherButtonTitles:@"确定", nil];
myAlert.alertViewStyle = UIAlertViewStylePlainTextInput;
[myAlert show];
}
//删除
else if (button.tag>= 100 && button.tag <=100 + _dataSource.count) {
[_dataSource removeObjectAtIndex:button.tag - 100 ];
[self.collectionView reloadData];
// NSIndexPath * indexPath = [NSIndexPath indexPathForRow:0 inSection:button.tag];
//
// [self.collectionView reloadItemsAtIndexPaths:@[indexPath]];
}
}
UICollectionViewController的用法1的更多相关文章
- IOS中UICollectionView和UICollectionViewController的用法
1.新建一个xib描述UICollectionViewCell(比如DealCell.xib),设置好resuse identifier(比如deal) 2.控制器继承UICollectionView ...
- UICollectionViewController用法
在iOS 6 发布前,开发人员习惯使用UITableView来展示几乎所有类型的数据集合.ios 6 为 IOS 引入了全新的控制器,用来显示数据集合,集合视图控制器是与表视图控制器类似的全新UI框架 ...
- iOS开发之窥探UICollectionViewController(五) --一款炫酷的图片浏览组件
本篇博客应该算的上CollectionView的高级应用了,从iOS开发之窥探UICollectionViewController(一)到今天的(五),可谓是由浅入深的窥探了一下UICollectio ...
- iOS开发之窥探UICollectionViewController(四) --一款功能强大的自定义瀑布流
在上一篇博客中<iOS开发之窥探UICollectionViewController(三) --使用UICollectionView自定义瀑布流>,自定义瀑布流的列数,Cell的外边距,C ...
- iOS开发之窥探UICollectionViewController(一) -- Ready Your CollectionViewController
之前用CollectionViewController只是皮毛,一些iOS从入门到精通的书上也是泛泛而谈.这几天好好的搞了搞苹果的开发文档上CollectionViewController的内容,亲身 ...
- UICollectionView在Swift3.0中的用法
UICollectionView在Swift3.0中的用法 UICollectionView的初始化跟OC中是相似的,创建 GameView 集成自 UICollectionView .注意不同于UI ...
- iOS开发之UICollectionViewController
1.概述 UICollectionView控件主要是用来做九宫格的,类似于android中的GridView控件.其用法与UITableView一样,首先要使控制器遵守数据源协议,再将控制器设置为UI ...
- EditText 基本用法
title: EditText 基本用法 tags: EditText,编辑框,输入框 --- EditText介绍: EditText 在开发中也是经常用到的控件,也是一个比较必要的组件,可以说它是 ...
- jquery插件的用法之cookie 插件
一.使用cookie 插件 插件官方网站下载地址:http://plugins.jquery.com/cookie/ cookie 插件的用法比较简单,直接粘贴下面代码示例: //生成一个cookie ...
随机推荐
- 提高Django高并发性的部署方案(Python)
方案: nginx + uWSGI 提高 Django的并发性 1. uWSGI : uWSGI是一个web服务器,实现了WSGI协议.uwsgi协议.h ...
- 题解-Atcoder_agc005D ~K Perm Counting
Problem AtCoder-agc005D 题意概要:给出\(n,k\),求合法的排列个数,其中合法定义为任何数字所在位置与自身值差的绝对值不为\(k\)(即求排列\(\{A_i\}\),使得\( ...
- codeforces 38G - Queue splay伸展树
题目 https://codeforces.com/problemset/problem/38/G 题意: 一些人按顺序进入队列,每个人有两个属性,地位$A$和能力$C$ 每个人进入时都在队尾,并最多 ...
- <TCP/IP>记一次关于IP地址和MAC物理地址的思考
是的,从3月6日第一次上计算机网络课起,我还是今天第一次对这本书里讲的知识点有了自己的疑问..之前看书就是 嗯嗯这好像很有道理,嗯嗯也许再多看几章就知道它在讲什么了.. 不过今天已经自学到了网络层了, ...
- thymeleaf:访问list,map等
1.map 在后端放入一个map Map<String, String> mapDict = serviceBaseDict.selectMap(ConstantDictType.SYSI ...
- atoi 和 itoa的实现
atoi 和 itoa是面试笔试经常要考到的题目,下面两份代码是用C语言实现的atoi和itoa: 1, atoi 原型: int atoi(const char *nptr); 函数说明: 参数np ...
- 前端 ----关于DOM的操作的相关实例
关于DOM操作的相关案例 1.模态框案例 需求: 打开网页时有一个普通的按钮,点击当前按钮显示一个背景图,中心并弹出一个弹出框,点击X的时候会关闭当前的模态框 代码如下: <!DOCTYPE ...
- Java中数据类型默认转换和强制类型转换
默认转换: a:由低到高一次为:(byte short char )---int ---long ---float --- double b:注意:byte short char ...
- 前端之css样式(选择器)。。。
一.css概述 CSS是Cascading Style Sheets的简称,中文称为层叠样式表,对html标签的渲染和布局 CSS 规则由两个主要的部分构成:选择器,以及一条或多条声明. 例如 二.c ...
- LeetCode(94):二叉树的中序遍历
Medium! 题目描述: 给定一个二叉树,返回它的中序 遍历. 示例: 输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,3,2] 进阶: 递归算法很简单,你可以通过迭代算法完成吗 ...