UI课程10 UITableView的编辑
2015-09-12 21:43
513 查看
1.内容思维导图
2.懒加载
懒加载——也称为延迟加载,即在需要的时候才加载(效率低,占用内存小)。所谓懒加载,写的是其get方法。所以方法名与属性名一致,返回属性的类型。
注意:如果是懒加载的话则一定要注意先判断是否已经有了,如果没有那么再去进行实例化
编辑中遇到的问题:
…ViewController中:
allDataDict是懒加载,使用self.allDataDict时才会执行(NSMutableDictionary * )allDataDict{}这个方法。这个方法属于get方法
3._array 与self.array的区别
self.array相当于〔self getArray〕,_arr相当于self->_array。一个是访问属性,一个是访问成员变量。
self.array 内存会无限使用
_array 就不会
self.array = groupArray 调用了set方法,一般会使retainCount + 1
_array = groupArray 就没有
往里面添加值的时候,必须使用 [self.array addObject:] ,不能使用_array添加。
4.添加背景图片
self.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@”image”]];
给tableView 添加背景图片还可以这样添加:
[_tableView setBackgroundView:[[UIImageView alloc] initWithImage:[UIImage imageNamed:@”image”]]];
5.UITabelView高级
内容思维导图:
1)自定义cell时重写它的初始化方法
- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier{
}
2)cell自适应高度
a.在自定义cell的 .m 文件中:
-(void)setStudent:(Student *)student{
}
//根据模型(内容)计算高度
-(CGFloat)calcHeightWithStudent:(Student *)student{
}
//根据模型计算出cell的高度
+(CGFloat)calcHeightForCellWithStudent:(Student *)student{
}
b. 在继承了UITabelViewController 的 .m 中:
//cell的默认高度为44,内容太多就会显示异常(重叠),自定义行高
-(CGFloat) tableView:(UITableView )tableView heightForRowAtIndexPath:(NSIndexPath )indexPath{
}
注意:
1.tableView:heightForRowAtIndexPath:⽅方法要⽐tableView:cellForRowAtIndexPath先执⾏
2.每种类型的cell要定义不同的重⽤用标识符
3.cell重⽤用的时候会根据重⽤用标识从重⽤用队列中取⽤用哪种类型的cell
4.cell自带一个contentView,自定义cell的时候,应该将cell上的视图加到contentView上(也可以加载到cell上,但不便于编辑),cell的结构如下:
2.懒加载
懒加载——也称为延迟加载,即在需要的时候才加载(效率低,占用内存小)。所谓懒加载,写的是其get方法。所以方法名与属性名一致,返回属性的类型。
注意:如果是懒加载的话则一定要注意先判断是否已经有了,如果没有那么再去进行实例化
编辑中遇到的问题:
…ViewController中:
allDataDict是懒加载,使用self.allDataDict时才会执行(NSMutableDictionary * )allDataDict{}这个方法。这个方法属于get方法
3._array 与self.array的区别
self.array相当于〔self getArray〕,_arr相当于self->_array。一个是访问属性,一个是访问成员变量。
self.array 内存会无限使用
_array 就不会
self.array = groupArray 调用了set方法,一般会使retainCount + 1
_array = groupArray 就没有
往里面添加值的时候,必须使用 [self.array addObject:] ,不能使用_array添加。
4.添加背景图片
self.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@”image”]];
给tableView 添加背景图片还可以这样添加:
[_tableView setBackgroundView:[[UIImageView alloc] initWithImage:[UIImage imageNamed:@”image”]]];
5.UITabelView高级
内容思维导图:
1)自定义cell时重写它的初始化方法
- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier{
if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { [self addAllViews]; } return self;
}
2)cell自适应高度
a.在自定义cell的 .m 文件中:
-(void)setStudent:(Student *)student{
self.nameLabel.text = student.name; self.introduceLable.text = student.introduce; //得到文字后计算高度 CGFloat height = [self calcHeightWithStudent:student]; //将得到的高度赋值给label // _introduceLable.frame.size.height = [self calcHeightWithStudent:student]; //不能直接赋值 CGRect frame = _introduceLable.frame; frame.size.height = height; _introduceLable.frame = frame;
}
//根据模型(内容)计算高度
-(CGFloat)calcHeightWithStudent:(Student *)student{
//1.设置计算所在的最大范围 CGSize maxSize = CGSizeMake(_introduceLable.frame.size.width, 1000); //2.创建字典,包含字体大小 NSDictionary *dict = @{NSFontAttributeName:_introduceLable.font}; //3.使用方法,计算文字的frame CGRect frame = [student.introduce boundingRectWithSize:maxSize options:NSStringDrawingUsesLineFragmentOrigin attributes:dict context:nil]; //4.返回frame的高度值 return frame.size.height;
}
//根据模型计算出cell的高度
+(CGFloat)calcHeightForCellWithStudent:(Student *)student{
//创建一个对象,执行计算lable高度的方法,获取高度 CGFloat lableHeight = [[[ShuangCell alloc] init] calcHeightWithStudent:student]; //返回可变的高度 + 固定的高度即可 return 70 + lableHeight;
}
b. 在继承了UITabelViewController 的 .m 中:
//cell的默认高度为44,内容太多就会显示异常(重叠),自定义行高
-(CGFloat) tableView:(UITableView )tableView heightForRowAtIndexPath:(NSIndexPath )indexPath{
Student *stu = self.allDataArray[indexPath.row]; if ([stu.gender isEqualToString:@"m"]) { return [StudentTableViewCell calcHeightForCellWithStudent:stu]; }else{ //使用ShuangCell(自定义cell)提供的方法,根据stu模型计算整个cell需要的高度 return [ShuangCell calcHeightForCellWithStudent:stu]; }
}
注意:
1.tableView:heightForRowAtIndexPath:⽅方法要⽐tableView:cellForRowAtIndexPath先执⾏
2.每种类型的cell要定义不同的重⽤用标识符
3.cell重⽤用的时候会根据重⽤用标识从重⽤用队列中取⽤用哪种类型的cell
4.cell自带一个contentView,自定义cell的时候,应该将cell上的视图加到contentView上(也可以加载到cell上,但不便于编辑),cell的结构如下:
相关文章推荐
- UIScrollView添加自动布局
- IOS上 关于状态栏的相关设置(UIStatusBar)
- 1101. Quick Sort (25)
- [iOS]给UILabel赋HTML数据。
- UISearchBar基本设置 和 代理方法
- 用NGUI显示图片鼠标点击的地方出现在屏幕上
- Java请求参数类QueryParameter
- EasyUI学习笔记_1
- 关于UI线程的阻塞问题以及处理方式
- Dynamic Programming实战一:Longest Increasing Subsequence算法分析及C代码实现
- POJ 1776 - Task Sequences(哈密顿图)
- UIStatusBarStyle的类型改变
- UISegmentedControl 开发笔记
- Android Dialog中的Builder设计模式
- POJ - 1986 Distance Queries(LCA离线)
- Codeforces Round #316 Tree Requests
- easyui的datagrid为何无法显示json数据
- UI 自定义视图
- iOS开发-------简单通讯录2(UISearchController)
- [Wed, 19 Aug 2015 ~ Tue, 25 Aug 2015] Deep Learning in arxiv