功能比较简单,简单的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里。我知道你们没遇到过。
网友评论