TableView展开与回收

TableView展开与回收

功能比较简单,简单的TableView展开与回收

一、HeadView.m中

1.实现加载xib文件的方法

+(HeadView *)instanceHeadView

{

NSArray* nibView =  [[NSBundle mainBundle] loadNibNamed:NSStringFromClass([self class]) owner:nil options:nil];

return [nibView objectAtIndex:0];

}

2.根据头部视图打开状态,旋转箭头

- (void)setOpen:(BOOL)Open{

NSLog(@"%d",Open);

if (Open) {

[UIView animateWithDuration:0.25

animations:^{

self.RightArrrow.transform = CGAffineTransformMakeRotation(M_PI_2);

}];

}else{

[UIView animateWithDuration:0.25

animations:^{

self.RightArrrow.transform = CGAffineTransformMakeRotation(0);

}];

}

}

二、ViewController.m中

1.headview的点击方法

- (void)action_tap:(UIGestureRecognizer *)tap {

NSString *section = [NSString stringWithFormat:@"%ld",tap.view.tag - 300];

HeadView*headview =(HeadView*) tap.view;

if ([dic[section] integerValue] == 0) {[dic setObject:@"1" forKey:section];

headview.Open = YES;

}else{//反之关闭cell[dic setObject:@"0" forKey:section];

headview.Open = NO;

}[self.tableView reloadSections:[NSIndexSet indexSetWithIndex:[section integerValue]] withRowAnimation:UITableViewRowAnimationFade];//有动画的刷新}

demo地址:https://github.com/youweikang/TableView-.git

这里面曾经遇到过2个坑,聊作记录

1.第1个section的row的数据不能影响第0个section的row的数据;(不能互相干扰,否则刷新列表崩溃)

2.头部视图加载方法不能放在

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section里。我知道你们没遇到过。

推荐阅读更多精彩内容