总结 ﹣ UITableViewCell
- 博客分类:
- 总结
注 : 文章不断更新,转载文章请加上作者
UITableView中显示的每一个单元都是一个UITableViewCell对象
每个UITableView中,都有三个属性
也就是内部都又3个控件UIImageView 两个UILabel
通过代码自定义cell 步骤
1. 新建一个继承自UITableView的类
2.1 数据源方法
2.2 - 创建Cell内部封装
3.重写initWithStyle : reusereuseIdentifier: 方法
先在自定义cell的.m文件中 .initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reusereuseIdentifier{ }方法中添加所有需要显示的子控件 (不需要设置数据和frame)
** 重写方法前首先在自定义cell中创建对应的属性
** 添加所有需要现实的子控件(不需要设置子控件的数据和frame, 子控件要添加到contentView中),并且将创建的控件赋值给属性
** 进行子控件一次性的属性设置(有些属性只需要设置一次,比如字体/固定图片等)
4. 提供两个模型
** 数据模型 : 存放cell显示的文字数据 , 图片数据 , 等等
** frame模型 : 存放数据模型 / 所有子控件的frame / cell的高度 / 等等
5.自定义cell拥有一个frame模型(不要数据模型);
6. 重写模型属性的setter方法, 在这个方法中设置子控件的显示数据和frame
然后在自定义cell中添加一个模型属性,并且在该属性的set方法中设置子控件的显示数据和frame(控制器传入模型并赋值该模型属性后,在set方法中执行 设置子控件数据,和设置frame的方法)
7. frame模型数据的初始化采取预加载的放似乎(每一个cell对应的frame模型数据只加载一起)
UITableView中显示的每一个单元都是一个UITableViewCell对象
每个UITableView中,都有三个属性
也就是内部都又3个控件UIImageView 两个UILabel
@property (nonatomic, readonly, retain) UIImageView *imageView ; @property (nonatomic, readonly, retain) UILabel *textLabel ; @property (nonatomic, readonly, retain) UILabel *detailTextLabel ;
通过代码自定义cell 步骤
1. 新建一个继承自UITableView的类
2.1 数据源方法
//然后在数据源方法 -创建自定义的cell - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { //1. 创建cell StatusCell *cell = [StatusCell cellWithTableView:tableView]; //2. 经过前两步后肯定又Cell了.给cell设置新的数据. cell.statusFrame = self.statusFrame[indexPath.row]; //3. 返回cell return cell; }
2.2 - 创建Cell内部封装
+ (instancetype)cellWithTableView:(UITableView *)tableview { //0. static修饰局部变量: 可以保证局部变量只分配以此存储空间(只初始化一次) static NSString *ID = @"tag"; //1. 通过一个标识,去缓存池中寻找可循环利用的cell StatusCell *cell = [tableview dequeueReusableCellWithIdentifier:ID]; //2. 如果缓存池找不到, 可循环利用的cell: 创建一个新的cell , 给cell贴个标识 if (cell == nil) { cell = [[StatusCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:ID]; } return cell; }
3.重写initWithStyle : reusereuseIdentifier: 方法
先在自定义cell的.m文件中 .initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reusereuseIdentifier{ }方法中添加所有需要显示的子控件 (不需要设置数据和frame)
** 重写方法前首先在自定义cell中创建对应的属性
** 添加所有需要现实的子控件(不需要设置子控件的数据和frame, 子控件要添加到contentView中),并且将创建的控件赋值给属性
** 进行子控件一次性的属性设置(有些属性只需要设置一次,比如字体/固定图片等)
@interface MessageCell() // 时间 @property (nonatomic, weak)UILabel *timeView; // 头像 @property (nonatomic, weak)UIImageView *iconView; // 正文 @property (nonatomic, weak)UIButton *textView; @end @implementation MessageCell - (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { //添加所有子控件 //时间 UILabel *timeView = [[UILabel alloc] init]; [self.contentView addSubview:timeView]; self.timeView = timeView; //头像 UIImageView *iconView = [[UIImageView alloc] init]; [self.contentView addSubview:iconView]; self.iconView = iconView; //正文 UIButton *textView = [[UIButton alloc] init]; [self.contentView addSubview:textView]; self.textView = textView; } return self; } @end
4. 提供两个模型
** 数据模型 : 存放cell显示的文字数据 , 图片数据 , 等等
** frame模型 : 存放数据模型 / 所有子控件的frame / cell的高度 / 等等
5.自定义cell拥有一个frame模型(不要数据模型);
6. 重写模型属性的setter方法, 在这个方法中设置子控件的显示数据和frame
然后在自定义cell中添加一个模型属性,并且在该属性的set方法中设置子控件的显示数据和frame(控制器传入模型并赋值该模型属性后,在set方法中执行 设置子控件数据,和设置frame的方法)
7. frame模型数据的初始化采取预加载的放似乎(每一个cell对应的frame模型数据只加载一起)
发表评论
-
发现控件设置了没显示的几种情况
2015-08-13 11:41 373有时候,明明frame和数据都设置了,但是控件却没显示出来,总 ... -
关于Tag的使用
2015-08-03 21:48 197很多时候,tag用作标示,可以通过标示去寻找例如一个父控件中里 ... -
总结 ﹣ UITableView (性能优化①)
2015-07-28 22:08 358注 : 文章不断更新,转载文章请加上作者 总结 ﹣ UI ... -
总结 ﹣ UITableView
2015-07-26 20:16 236注 : 文章不断更新,转载文章请加上作者 要实现表格数据形 ... -
总结 ﹣ IOS的动画
2015-07-26 11:14 404注 : 文章不断更新,转载 ... -
总结 ﹣ 代理设计模式
2015-07-25 18:50 260注 : 文章不断更新,转载文章请加上作者 1 . 什么是(代 ... -
总结 - 控制沙盒(NSFileManager 文件操作)④
2015-07-25 10:23 384注 : 文章不断更新,转载文章请加上作者 NSfIleMa ... -
总结 ﹣ 查看真机的沙盒 ③
2015-07-21 21:56 410前面 总结 ﹣ 沙盒 ... -
总结 ﹣ 获取沙盒目录 ②
2015-07-21 21:55 304注 : 文章不断更新,转载文章请加上作者 总结 ... -
storyboard常用属性总结
2015-07-20 18:01 256注 : 文章不断更新,转载文章请加上作者 View ... -
总结 ﹣ 沙盒机制(SandBox)①
2015-07-20 15:56 285iOS APP可以在自己的沙盒里读写文件,但 ... -
使用xib封装一个自定义view
2015-07-15 17:51 500使用xib封装一个自定义view步骤 1.新建一个继承自U ...
相关推荐
UITableViewCell自定义等高
手写代码自定义UITableViewCell和xib自定义UITableViewCell的DEMO,适合初学者学习。
利用原始UITableViewcell强大的自适应性能,改造UITableViewcell,与自定义UITableViewcell略有不同
我们通过代码来探索UITableViewCell重用的实现
UITableViewCell动画效果
UITableViewCell 自动调节高度
优化UITableViewCell滚动性能,使用到Loren Brichter在Twitter中写到得关于UITableViewCell流畅滚动的内容。
NULL 博文链接:https://justsee.iteye.com/blog/2208725
UITableviewCell高度自适应
Xib设计UITableViewCell然后动态加载例子,对应博客贴子地址: http://blog.csdn.net/duanyipeng/article/details/7259108
自定义UITableViewCell。实现各种样式的表格输入界面ios源代码设计资料
UITableViewCell的四种不同的定制单元格方式
IOS特定条件上UITABLEVIEWCELL不刷新的现象
前两年IOS应用源码-主要是用于毕业设计学习的。
ios7自定义UITableViewCell
自定义UITableViewCell
uitabeview带图片的cell,UIimageview可以点击切换图片,cell也可以点击
UITableViewCell高度的自适应
UITableViewCell的动态高度计算一直是一个交流讨论的话题,也已经有了很多实现的机制,但更多的是需要一些扩展类什么的,还有需要计算什么的,使用起来比较麻烦。因此这里推荐一种自动计算高度的方法,他是在我的...
UITableViewCell左右滑动出现更多按钮,按钮高度自定义