我们需要记录最近打开的cell 和是否打开cell
通过在代理方法中修改cell 的状态
#import "QHOPenCellViewController.h"
#import "QHTableViewCell.h"
@interface QHOPenCellViewController ()<UITableViewDelegate,UITableViewDataSource>
{
//最近打开的cell
NSInteger currentClickindex;
//是否打开cell
BOOL isOpenCell;
}
@property (nonatomic, weak) UITableView *tableView;
@end
@implementation QHOPenCellViewController
- (UITableView *)tableView
{
if (!_tableView) {
UITableView *tableView = [[UITableView alloc]init];
tableView.frame = self.view.bounds;
tableView.delegate = self;
tableView.dataSource = self;
[self.view addSubview:tableView];
}
return _tableView;
}
- (void)viewDidLoad {
[super viewDidLoad];
self.tableView;
// [self.tableView reloadRowsAtIndexPaths:<#(NSArray *)#> withRowAnimation:<#(UITableViewRowAnimation)#>]
currentClickindex = -1;
// Do any additional setup after loading the view from its nib.
}
/**
* 点击展开cell
*
* @param tableView <#tableView description#>
* @param section <#section description#>
*
* @return <#return value description#>
*/
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return 10;
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 3;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
QHTableViewCell *cell = [QHTableViewCell cellWithTableView:tableView];
// static NSString *cellName = @"cell";
// UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellName];
// if (!cell) {
// cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellName];
// }
//
// cell.textLabel.text = @"test";
// cell.detailTextLabel.text = @"test";
//
return cell;
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
if (indexPath.row == currentClickindex) {
if (isOpenCell == YES) {
currentClickindex = indexPath.row;
return 200;
}
return 100;
}
return 100;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if (indexPath.row == currentClickindex) {
isOpenCell = !isOpenCell;
}else
{
isOpenCell = YES;
}
currentClickindex = indexPath.row;
[tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
/*
#pragma mark - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
// Get the new view controller using [segue destinationViewController].
// Pass the selected object to the new view controller.
}
*/
@end
cell的展开与闭合
最新推荐文章于 2021-10-27 14:34:44 发布