折叠cell就是通过按钮的状态来改变tableView的cell数量和cell的内容,通过判断button的状态对tableView的数据更新, 也可以通过其他的东西进行判断。
具体的代码
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
self.tableView = [[UITableView alloc] initWithFrame:CGRectMake(141.5, 200, 100, 25)];
self.tableView.delegate = self;
self.tableView.dataSource = self;
[self.view addSubview:self.tableView];
[self.tableView registerClass:[TableViewCell class] forCellReuseIdentifier:@"111"];
self.buttonSwift = [UIButton buttonWithType:UIButtonTypeSystem];
self.buttonSwift.frame = CGRectMake(251.5, 200, 30, 30);
[self.buttonSwift setTitle:@"<" forState:UIControlStateNormal];
//[self.buttonSwift setTitle:@">" forState:UIControlStateHighlighted];
[self.buttonSwift addTarget:self action:@selector(pressButton) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:self.buttonSwift];
self.arrayCellText = [NSMutableArray arrayWithObjects:@"cell1", @"cell2", @"cell3", @"cell4", nil];
self.i = 0;
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
if (self.buttonSwift.selected == YES) {
return 4;
} else {
return 1;
}
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
return 25;
}
- (UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell* cell = [self.tableView dequeueReusableCellWithIdentifier:@"111"];
if (!cell) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"111"];
}
if (self.buttonSwift.selected == NO) {
cell.textLabel.text = self.arrayCellText[self.i];
}
if (self.buttonSwift.selected == YES) {
cell.textLabel.text = self.arrayCellText[indexPath.row];
}
cell.textLabel.font = [UIFont systemFontOfSize:12];
return cell;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
if (indexPath.row != 0) {
self.i = indexPath.row;
self.buttonSwift.selected = NO;
[self.buttonSwift setTitle:@"<" forState:UIControlStateNormal];
self.tableView.frame = CGRectMake(141.5, 200, 100, 25);
[self.tableView reloadData];
}
}
- (void)pressButton {
self.buttonSwift.selected = !self.buttonSwift.selected;
if (self.buttonSwift.selected == YES) {
[self.buttonSwift setTitle:@">" forState:UIControlStateNormal];
self.tableView.frame = CGRectMake(141.5, 200, 100, 100);
}
if (self.buttonSwift.selected == NO) {
[self.buttonSwift setTitle:@"<" forState:UIControlStateNormal];
self.tableView.frame = CGRectMake(141.5, 200, 100, 25);
}
[self.tableView reloadData];
}