iOS-UI控件之UITableView(二)- 自定义不等高的cell
2015-06-30 11:19
387 查看
不等高的cell
给模型增加frame数据
所有子控件的framecell的高度
@interface XMGStatus : NSObject /**** 文字\图片数据 ****/ // ..... /**** frame数据 ****/ /** 头像的frame */ @property (nonatomic, assign) CGRect iconFrame; // ..... /** cell的高度 */ @property (nonatomic, assign) CGFloat cellHeight; @end
重写模型cellHeight属性的get方法
- (CGFloat)cellHeight { if (_cellHeight == 0) { // ... 计算所有子控件的frame、cell的高度 } return _cellHeight; }
在控制器中
实现一个返回cell高度的代理方法在这个方法中返回indexPath位置对应cell的高度
/** * 返回每一行cell的具体高度 */ - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { XMGStatus *status = self.statuses[indexPath.row]; return status.cellHeight; }
给cell传递模型数据
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *ID = @"tg"; // 访问缓存池 XMGStatusCell *cell = [tableView dequeueReusableCellWithIdentifier:ID]; // 设置数据(传递模型数据) cell.status = self.statuses[indexPath.row]; return cell; }
新建一个继承自UITableViewCell
的子类,比如XMGStatusCell
@interface XMGStatusCell : UITableViewCell @end
在XMGStatusCell.m文件中
重写-initWithStyle:reuseIdentifier:方法
在这个方法中添加所有需要显示的子控件
给子控件做一些初始化设置(设置字体、文字颜色等)
/** * 在这个方法中添加所有的子控件 */ - (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { // ...... } return self; }
在XMGStatusCell.h文件中提供一个模型属性,比如XMGTg模型
@class XMGStatus; @interface XMGStatusCell : UITableViewCell /** 团购模型数据 */ @property (nonatomic, strong) XMGStatus *status; @end
在XMGTgCell.m中重写模型属性的set方法
在set方法中给子控件设置模型数据- (void)setStatus:(XMGStatus *)status { _status = status; // ....... }
重写-layoutSubviews
方法
一定要调用[super layoutSubviews]
在这个方法中设置所有子控件的frame
/** * 在这个方法中设置所有子控件的frame */ - (void)layoutSubviews { [super layoutSubviews]; // ...... }
相关文章推荐
- C#获取CPUID(MD5输出),网卡ID,主DNS,备用DNS
- 数据库生成UUID
- kendo UI loading 操作方法:
- ORA-19573: cannot obtain exclusive enqueue for datafile 5
- ArduinoYun教程之Arduino编程环境搭建
- distinguish and differentiate
- UISearchDisplayCotroller
- iOS6新特征:UICollectionView介绍
- 安装及汉化并使用Crowd2.7集成Confluence5.3与JIRA6.1,实现单点登录
- 第16周周四:GUI编程及文件对话框的使用
- druid简单教程
- request如何获取请求路径方法
- 第14周实验作业:GUI编程初步
- easyui
- 解析:使用easyui的form提交表单,在IE下出现类似附件下载时提示是否保存的现象
- 【最大团】【HDU1530】【Maximum Clique】
- 【最大团】【HDU1530】【Maximum Clique】
- Material UI:非常强大的CSS框架
- EasyUIControl(一个可以简化ui界面的组件库
- easyui使用datagrid时列名包含特殊字符导致表头与数据错位的问题