我想做min / max(展开/折叠)按钮功能。请看下面的图片了解更多信息。有人知道如何开发这个功能。我有一些例子,但那些不完全是我想要的。请帮我解决这个问题。
答案 0 :(得分:0)
几天前我有类似的要求。我使用自定义tableview单元格完成了这项工作。
首先,您必须将每行的索引路径传递给单元格。为此,我已经在自定义tableview单元格中获取了一个属性。 即, @property(nonatomic,assign)NSIndexPath * indexPathOfCell;
现在,您必须在datasource方法中传递row的索引路径。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;
您必须在自定义tableviewcell中编写委托方法,以便当用户单击最小/最大按钮时,您可以通过此委托调用重新加载该单元格。
<强> - (无效)reloadCellWithIndexPath:(NSIndexPath *)indexPath; 强>
您必须将视图控制器设置为要在其中填充表的自定义tableview单元格的委托。在那个类中,你必须维护一个NSMutableArray。
NSMutableArray * selectedIndexPaths;
当 reloadCellWithIndexPath 被调用时,您可以完全相同。
-(void)reloadCellWithIndexPath:(NSIndexPath*)indexPath{
if(![selectedIndexPaths containsObject:indexPath]){
[selectedIndexPaths addObject:indexPath];
}else
[selectedIndexPaths removeObject:indexPath];
[tableView reloadData];
}
在 heightForRowAtIndexPath 方法中,您可以更改特定行的高度。
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
BOOL cellModeChanged = NO;
for (NSIndexPath *indexpath in selectedIndexPaths) {
if(indexpath.section == indexPath.section && indexpath.row == indexPath.row)
cellModeChanged = YES;
}
if(cellModeChanged)
return 400.0;
else
return 100.0;
}