ios对UITableView进行封装
原由
从事ios工作有段时间了,其中UItableView频繁被使用中,这个过程中不断重复的创建加入代理,好麻烦,而且也让viewcontroller代码显的臃肿,因此做了下面的封装
思路
1.减少重复工作
tableview创建的工作做一次
2.类似的工作作一次
获取数据过程中就把最后需要多少个section,多少个cell的工作做完,后续直接用
3.是谁的东西就归谁做
tableviewcell的高度计算,数据填充都让cell自己去做
代码简单使用样例
简单的一个使用样例
1.viewcontroller
//数据源填充
-(void)createDataSource{
XCTableViewDataSection *section = [[XCTableViewDataSection alloc] init];
[section.rowModelsArr addObject:@"1"];
[section.rowModelsArr addObject:@"2"];
[section.rowModelsArr addObject:@"3"];
[section.rowModelsArr addObject:@"4"];
[self.dataSource.sections addObject:section];
}
//cellforrow类似功能
-(Class)xctableView:(UITableView *)tableView cellClassAtModel:(id)model{
return [TableViewCell1 class];
}
//tableviewcell的点击事件
-(void)xctableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath model:(id)model{
[self.tableView deselectRowAtIndexPath:indexPath animated:YES];
}
2.tableviewcell
设置高度
-(CGFloat)xctableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
return 100;
}
赋值
-(void)xcSetModel:(id)model forIndexPath:(NSIndexPath *)indexPath{
_lbName.text = model;
}
现有提供的代理
1.viewcontroller
/************设置tableviewcell *******/
//通过model判断加入不同的tableViewCell
-(Class)xctableView:(UITableView *)tableView cellClassAtModel:(id)model;
//通过indexpath判断加入不同的tableViewCell
-(Class)xctableView:(UITableView *)tableView cellClassAtIndexPath:(NSIndexPath *)indexPath;
/********tableviewcell中操作反馈作用的代理 *******/
-(void)xctableviewCell:(XCTableViewCell *)cell;
-(void)xctableviewCell:(XCTableViewCell *)cell model:(id)model;
-(void)xctableviewCell:(XCTableViewCell *)cell button:(UIButton *)button model:(id)model;
2. tableviewcell
/*****提供通过indexpath和数据两种方法判断设置高度 *******/
-(CGFloat)xctableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath;
-(CGFloat)xctableView:(UITableView *)tableView heightForRowAtModel:(id)Model;
扩展的功能
1.提供self.dataSource.isXib来设置支持使用xib和纯代码编写的两种cell
2.tableviewcell提供parameters可以传入请求数据,适用复杂业务需要外层json判断的
准备加入的(等我有空了就加)
1.tableviewcell中加入curController,获取当前控制器(代码被我注释了,已经有了)
2.重写tableview和datasource方法
3.对header和footer的封装
标签:
xctableview
, ios
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从二进制到误差:逐行拆解C语言浮点运算中的4008175468544之谜
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· C# 13 中的新增功能实操
· Ollama本地部署大模型总结
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(4)
· langchain0.3教程:从0到1打造一个智能聊天机器人
· 2025成都.NET开发者Connect圆满结束