UITableView手风琴效果开发总结

一、实现原理
    实质上就是创建UITableView。包含对section的和cell的自定义,对section添加TapGesture监听点击操作(实时修改标记值),(通过标记值)实时改变numberOfRowsInSection的值,然后调用UITableView的reloadData方法实现展开/收缩section的效果。

二、实现流程
    1 初始化tableView,并对对section进行注册registerNib:forCellReuseIdentifier:。
    2 实现UITableView的相关回调函数:
        numberOfSectionsInTableView
        heightForRowAtIndexPath
        numberOfRowsInSection
        didSelectRowAtIndexPath
    heightForHeaderInSection
        在cellForRowAtIndexPath中定义cell;
        在viewForHeaderInSection中定义section,并添加点击手势UITapGestureRecognizer。

三、注意问题
    1 对tableViewsection进行重用机制时,需要在初始化UITableView的时候对Cell进行注册(如果不注册,界面首次加载后,第一个section不会显示)
   
注册方法一:使用registerClass注册sectioncell(还需要在cell的实现文件中重写initWithStyle并加载自己的nib
   
[_accordionTableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"accordionIdentifier"];
   
注册方法二:使用registerNib注册sectioncell
    [
self.accordionTableView registerNib:[UINib nibWithNibName:@"SectionTableViewCell" bundle:nil] forCellReuseIdentifier:@"sectionIdentifier"];

    2 通过标记数组flagArr和section的tag值,来判断点击的section,实现展开/收缩效果和section有边箭头方向(收缩箭头向右,展开箭头向下)。

源码地址:[email protected]:JeffersonZH/ZJFAccordion.git


你可能感兴趣的:(iOS)