小tableView点击按钮进行展开和折叠

it2022-07-04  115

我也不知道,这个应该叫什么,反正,先看一下效果图吧 弄出的效果就是这个样子 点击右边按钮后展开。 然后点击单元格进行选择,选择后再次合上,显示的是选择的内容,然后可以再次点击按钮,重新进行选择 接下来,看看这个是怎么实现的,应该有很多的方法,我是个初学者,所以目前只会这一种。

一个可变数组,里面存储,这些文字一个全局变量,布尔值,用来判断是tableView的状态然后根据布尔值,来设置单元格的行数,和位置大小 //设置初始的tableView _tableview = [[UITableView alloc] init]; _tableview.frame = CGRectMake(260, 160, 120, 30); [_tableview registerClass:[UITableViewCell class] forCellReuseIdentifier:@"littleCell"]; [_tableview registerClass:[UITableViewCell class] forCellReuseIdentifier:@"little2Cell"]; [self.view addSubview:_tableview]; _tableview.dataSource = self; _tableview.delegate = self; //这是存储数据的可变数组数组 _dataArray = [[NSMutableArray alloc] init]; [_dataArray addObject:@"原创作品"]; [_dataArray addObject: @"设计资料"]; [_dataArray addObject:@"设计师观点"]; [_dataArray addObject:@"设计教程"];入代码片 ....... //根据不同的布尔值,返回不同的cell - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { if (_isOpen) { UITableViewCell *cell = [_tableview dequeueReusableCellWithIdentifier:@"little2Cell" forIndexPath:indexPath]; cell.textLabel.text = _dataArray[indexPath.row]; cell.textLabel.font = [UIFont systemFontOfSize:12]; cell.textLabel.textAlignment = NSTextAlignmentLeft; return cell; } else { UITableViewCell *cell = [_tableview dequeueReusableCellWithIdentifier:@"littleCell" forIndexPath:indexPath]; cell.textLabel.text = _dataArray[indexPath.row]; cell.textLabel.font = [UIFont systemFontOfSize:12]; cell.textLabel.textAlignment = NSTextAlignmentLeft; return cell; } } //设置行数 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { if (_isOpen) { return 4; } else { return 1; } return 4; } //button的点击事件,点击后要改变布尔值 -(void)pressOpen { if (_isOpen) { _tableview.frame = CGRectMake(260, 160, 120, 30); _isOpen = NO; } else { _tableview.frame = CGRectMake(260, 160, 120, 120); _isOpen = YES; } [_tableview reloadData]; //数据更新,一定不要忘记写这一句,不然,可以试试 } //点击单元格 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { _str = [NSString stringWithString:_dataArray[indexPath.row]]; [_dataArray insertObject:_str atIndex:0]; //将选中的对应的数据插入到0的位置处, [_dataArray removeObjectAtIndex:indexPath.row + 1]; //删除选中的数据 _isOpen = NO; //改变布尔值 _tableview.frame = CGRectMake(260, 160, 120, 30); //重新设定位置大小 [_tableview reloadData]; //更新数据 }

最后就可以实现想要的效果了,刚开始学习,新手一枚,若有错误,请及时纠正。


最新回复(0)