@class ZHZHeaderView;
/** * 协议 * 作用: 传值(点击区头的section 和 区头view) *
@param section 区头的section *
@param headview 区头view */
@protocol HeaderProtocol
- (void)clickHeaderOfSection:(NSInteger)section headView:(ZHZHeaderView *)headview;
@end
@interface ZHZHeaderView : UITableViewHeaderFooterView
@property (nonatomic, assign)id delegate;
/**
* 添加 轻击 手势
*/
@property (nonatomic, strong)UITapGestureRecognizer *tap;
@property (nonatomic, strong)UIImageView *imageV;
@property (nonatomic, strong)UILabel *titleLB;
@property (nonatomic, strong)UIImageView *typeImagV;
@end
- (instancetype)initWithReuseIdentifier:(NSString *)reuseIdentifier
{
if (self = [super initWithReuseIdentifier:reuseIdentifier]) {
//在这里向contentView添加控件
_imageV = [[UIImageView alloc] init];
[self.contentView addSubview:_imageV];
_titleLB = [[UILabel alloc] init];
[self.contentView addSubview:_titleLB];
_typeImagV = [[UIImageView alloc] init];
[self.contentView addSubview:_typeImagV];
}
return self;
}
//布局子控件时添加 tap手势
- (void)layoutSubviews {
[super layoutSubviews];
self.imageV.frame = CGRectMake(40, 5, 25, 30);
self.imageV.backgroundColor = [UIColor redColor];
self.titleLB.frame = CGRectMake(70, 5, 100, 30);
self.titleLB.backgroundColor = [UIColor greenColor];
self.typeImagV.frame = CGRectMake(SCREEN_WIDTH - 70, 5, 30, 30);
self.typeImagV.backgroundColor = [UIColor greenColor];
// self.contentView.backgroundColor = [UIColor redColor];
[self.contentView addGestureRecognizer:self.tap];
}
#pragma mark - Action
- (void)tapAction:(UITapGestureRecognizer *)tap {
if ([self.delegate respondsToSelector:@selector(clickHeaderOfSection:headView:)]) {
[self.delegate clickHeaderOfSection:self.tag headView:self];
}
}
#pragma mark - Getter
- (UITapGestureRecognizer *)tap {
if (_tap == nil) {
_tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapAction:)];
}
return _tap;
}
#pragma mark - life
- (void)dealloc
{
[self removeGestureRecognizer:self.tap];
}
#import "PhysicalViewController.h"#import "ZHZHeaderView.h"@interface PhysicalViewController ()@property (nonatomic, strong) UITableView *scrollerTableV; //整个屏幕大的tableView
@property (nonatomic, strong) UIView *headerclassView; //集合View
///数据字典
@property (nonatomic, strong)NSDictionary *cityDict;
///存放每个区域状态
@property (nonatomic, strong)NSMutableArray *foldArr;
@end
@implementation PhysicalViewController
//懒加载创建tableView
-(UITableView *)scrollerTableV
{
if (!_scrollerTableV) {
_scrollerTableV = [[UITableView alloc] initWithFrame:CGRectMake(0, self.view.frame.origin.y, SCREEN_WIDTH, SCREEN_HEIGHT) style:UITableViewStylePlain];
_scrollerTableV.backgroundColor = KBackColor;
// [_scrollerTableV registerClass:[HomePageCell class] forCellReuseIdentifier:@"HotTopicCell"];
//
// [_scrollerTableV registerClass:[HomePageCell class] forCellReuseIdentifier:@"HomePageCell"];
[_scrollerTableV registerClass:[ZHZHeaderView class] forHeaderFooterViewReuseIdentifier:@"header"];
//去掉cell默认的分割线
// _scrollerTableV.separatorStyle = NO;
_scrollerTableV.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];
}
return _scrollerTableV;
}
- (void)viewDidLoad {
[super viewDidLoad];
self.title = @"物理";
self.view.backgroundColor = [UIColor greenColor];
self.foldArr = [NSMutableArray array];
for (int i = 0; i <5; i++) {
[self.foldArr addObject:@0];
}
[self.view addSubview:self.scrollerTableV];
_scrollerTableV.delegate = self;
_scrollerTableV.dataSource = self;
[self setHeaderView];
}
//头部视图
- (void)setHeaderView{
_scrollerTableV.tableHeaderView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, 100)];
_scrollerTableV.tableHeaderView.backgroundColor = [UIColor whiteColor];
_headerclassView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, 100)];
_headerclassView.backgroundColor = [UIColor blueColor];
[_scrollerTableV.tableHeaderView addSubview:_headerclassView];
[self setThreeGradButton];
}
- (void)setThreeGradButton
{
for (int i = 0; i <3 ; i ++) {
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
button.frame = CGRectMake(40+((SCREEN_WIDTH-240)/3 +80)*i, 20, (SCREEN_WIDTH-240)/3, 100-40);
button.tag = i + 1;
[button setBackgroundColor:[UIColor redColor]];
[button addTarget:self action:@selector(gradButtonClick:) forControlEvents:UIControlEventTouchUpInside];
[_headerclassView addSubview:button];
}
}
- (void)gradButtonClick:(UIButton *)button
{
NSLog(@"点击的按钮是:%ld",button.tag);
}
#pragma mark---tableviewDelegate
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 5;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
if ([self.foldArr[section] integerValue]) {
return 5;
}
return 0;
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
return 50;
}
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
return 45;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];
if (!cell) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:@"cell"];
cell.textLabel.text = @"声现象";
}
return cell;
}
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
ZHZHeaderView *headView = [tableView dequeueReusableHeaderFooterViewWithIdentifier:@"header"];
headView.titleLB.text = @"小学生啊";
headView.tag = section;
headView.delegate = self;
return headView;
}
#pragma mark -HeaderProtocol
- (void)clickHeaderOfSection:(NSInteger)section headView:(ZHZHeaderView *)headview{
NSLog(@"点击了区头");
self.foldArr[section] = @(![self.foldArr[section] integerValue]);
NSLog(@"%@",self.foldArr[section]);
[_scrollerTableV reloadSections:[NSIndexSet indexSetWithIndex:section] withRowAnimation:UITableViewRowAnimationNone];
}
@end
网友评论