我是一个不爱写东西的人,第一次写东西,可能写的不是很清楚。我也是个程序猿中的菜鸟,有错的地方希望能有大神多多指教。
关于这个折叠,我在Code4App上面找了一些三方的,可是发现都不是很好用,说白了就是我技术不够,看不懂。然后就被逼着自己写了一个。我写的就是简单的那种,没有展开收起来的那个动画,如果说想要动画的话可以用系统自带的这个方法:- (void)insertRowsAtIndexPaths:(NSArray*)indexPaths withRowAnimation:(UITableViewRowAnimation)animation;动态添加子cell,这个会有一个动画。这里我就不详细说明了。
折叠实现并没有什么技术,就是一个简单的逻辑问题,主要清理逻辑就行了。
在做折叠的时候tableview的numberOfSectionsInTableView返回的应该是section的count。
tableview的numberOfRowsInSection则需要去判断当前section是否展开,并且点击的是哪一个section。这里就需要一个bool变量isOpen来记录是否展开,一开始默认为NO。一个变量selectIndexPath来记录选择的哪一个section。如果是展开,点击的第一个section就返回第一个section的cell+1,(加1是因为还有父cell,如果不加1,子cell就会少一个)。没有展开,就只有父cell,return 1。
tableview的cellForRowAtIndexPath,当section没有展开的时候,indexPath.row只会等于0,大于0的情况,必须是section展开
点击section时,有个函数-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 可以获取点击的行号
判断section是否展开,是展开时,分为两种种情况。第一种:点击的不是同一个section,就关闭当前的section,获取点击的section并且打开获取的section的子cell。第二种:又分为两种情况。A:点击的是同一个section,获取当前的section,关闭当前section。B:点击的同一个section下的子cell,那么就进入详情或者不做操作。
是关闭时,设置isOpen==YES,获取点击的section,展开section下的子cell。
最后刷新tableview。
以上内容仅供参考,如果喜欢那就点个喜欢。
网友评论