SLExpandableTableView新手教程:3大协议8个回调方法全清单,一文看懂用法

📅 2026/8/23 13:06:23
SLExpandableTableView新手教程:3大协议8个回调方法全清单,一文看懂用法
SLExpandableTableView新手教程3大协议8个回调方法全清单一文看懂用法【免费下载链接】SLExpandableTableViewSLExpandableTableView is a UITableView subclass that gives you easy access to expandable and collapsable sections by just implementing a few more delegate and dataSource protocols. (iPhone, iPad, iOS)项目地址: https://gitcode.com/gh_mirrors/sl/SLExpandableTableViewSLExpandableTableView 是一个专为 iOS 开发者打造的UITableView 子类库只需用 CocoaPods 引入并实现几个额外的协议方法就能轻松获得**可展开、可折叠的表格分区expandable / collapsible sections**效果支持 iPhone 和 iPad是构建手风琴式列表 UI 的轻量级免费方案。 先看看展开效果长什么样下面两张截图来自项目自带的示例工程可以直观感受分区展开/折叠的交互效果一、快速上手2步完成SLExpandableTableView安装安装只有一行命令。在工程根目录的Podfile中添加依赖即可版本信息见 SLExpandableTableView.podspecpod SLExpandableTableView核心源码仅有两个文件逻辑非常轻量方便阅读和二次改造头文件协议与方法声明SLExpandableTableView.h实现文件展开/折叠状态管理SLExpandableTableView.m二、3大协议SLExpandableTableView的核心设计库的设计思路是继承 协议SLExpandableTableView继承自UITableView把展开逻辑封装在内部开发者只需实现3 大协议即可。1. UIExpandingTableViewCell —— 展开单元格协议自定义的分区头部单元格要实现这个协议定义见 SLExpandableTableView.h#L18-L25只需提供 3 个成员成员作用loading属性标记该分区是否正在下载数据可展示加载中提示expansionStyle属性只读当前样式UIExpansionStyleCollapsed折叠或UIExpansionStyleExpanded展开setExpansionStyle:animated:方法切换展开/折叠状态时回调通常用来旋转箭头图标、刷新副标题文字2. SLExpandableTableViewDatasource —— 数据源协议3个方法在实现标准UITableViewDataSource的基础上还需实现 3 个必选方法#方法作用1tableView:canExpandSection:返回 YES 表示该分区允许展开2tableView:needsToDownloadDataForExpandableSection:展开前是否需要先下载数据返回 YES 时tableView:downloadDataForExpandableSection:会被调用3tableView:expandingCellForSection:提供展开占位单元格会显示在该分区第 0 行3. SLExpandableTableViewDelegate —— 代理协议5个方法#方法必填作用4tableView:downloadDataForExpandableSection:✅ 必选此处发起数据下载成功后调用expandSection:animated:展开失败则调用cancelDownloadInSection:5tableView:willExpandSection:animated:可选分区即将展开时的回调6tableView:didExpandSection:animated:可选分区展开完成后的回调7tableView:willCollapseSection:animated:可选分区即将折叠时的回调8tableView:didCollapseSection:animated:可选分区折叠完成后的回调示例工程常在此清理状态 另有 1 个可选回调tableView:willDisplayCell:forRowAtIndexPathWhileAnimatingSection:见 SLExpandableTableView.h#L46用于在分区动画过程中显示单元格时介入自定义表现。三、5步跑通从创建表格到分区展开创建表格在loadView中实例化SLExpandableTableView并赋给self.tableView或像示例工程那样直接替换整个视图参考 SLExpandableTableViewController.m#L112-L119。指定代理设置tableView.dataSource self和tableView.delegate self注意请通过这两个属性设置而非直接访问 UIKit 的tableView.delegate。实现 3 个数据源方法告诉表格哪些分区可展开、是否需要下载、用什么头部单元格。实现下载方法在downloadDataForExpandableSection:中拉取数据完成后调用expandSection:animated:。实现折叠清理在didCollapseSection:animated:中释放或标记数据示例写法见 SLExpandableTableViewController.m#L157-L160。展开/折叠的完整交互流程参考SLExpandableTableViewController.m#L147-L160。四、常用API速查编程式展开、折叠与状态查询除了手动点击头部单元格还可以用代码主动控制方法声明见 SLExpandableTableView.h#L92-L99API用途expandSection:animated:编程式展开某分区collapseSection:animated:编程式折叠某分区cancelDownloadInSection:下载失败时取消该分区的下载状态reloadDataAndResetExpansionStates:刷新数据并重置所有展开状态canExpandSection:/isSectionExpanded:查询分区是否可展开 / 当前是否已展开maximumRowCountToStillUseAnimationWhileExpanding行数超过该值时展开将跳过动画提升大数据量下的流畅度五、完整示例在哪里看示例工程包含一个自定义的黄色头部单元格实现了UIExpandingTableViewCell协议含加载中 / 点击展开 / 点击折叠三态文案和两个分区的演示数据全部协议实现一目了然示例控制器SLExpandableTableViewController.m测试入口与单测Tests.m更多用法说明README.md总结SLExpandableTableView 把可展开分区封装得足够简单安装一行命令、实现 3 大协议、8 个回调方法各司其职就能为 iOS 应用加上手风琴式的分区展开体验。建议从示例工程出发对照协议清单逐条实现10 分钟即可跑通自己的第一个可展开表格。【免费下载链接】SLExpandableTableViewSLExpandableTableView is a UITableView subclass that gives you easy access to expandable and collapsable sections by just implementing a few more delegate and dataSource protocols. (iPhone, iPad, iOS)项目地址: https://gitcode.com/gh_mirrors/sl/SLExpandableTableView创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考