我接近UITableview
以获取单元格ExpandView
。我想要实现这样的东西。
因此,UITableView
是最好的方法或建议我任何好的实施方式,我也无法根据subview
调整screenSize
。
答案 0 :(得分:3)
可能还有另外一种方法可以实现这一点,但这就是我如何动态扩展UITableViewCell
。这可以提供想法,您可以实施您的解决方案。
我在数据模型中保持行高:
- (void)viewDidLoad {
[super viewDidLoad];
//Data source
datasource = [[NSMutableArray alloc] init];
NSMutableDictionary *aDicti = [[NSMutableDictionary alloc] init];
[aDicti setValue:@"a TEXT" forKey:@"text"];
[aDicti setValue:@(50) forKey:@"cellheight"]; // here
}
选择更改后,只需更新数据源中的相关密钥。
-(void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath
{
[tableView beginUpdates];
[[datasource objectAtIndex:indexPath.row] setObject:@(50) forKey:@"cellheight"];
[tableView endUpdates];
}
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
[tableView beginUpdates];
[[datasource objectAtIndex:indexPath.row] setObject:@(200) forKey:@"cellheight"];
[tableView endUpdates];
}
一旦[tableView endUpdates];已执行heightForRowAtIndexPath
和numberOfRowsInSection
委托方法,并使用数据源中的值自动调整单元格高度。
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
return [[[datasource objectAtIndex:indexPath.row] objectForKey:@"cellheight"] intValue];
}
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return datasource.count;
}
如果您不想在数据源中保留行高,基本上可以应用此功能。
-(void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath
{
[tableView beginUpdates];
[tableView endUpdates];
}
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
[tableView beginUpdates];
[tableView endUpdates];
}
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
if (tableView.indexPathForSelectedRow.row == indexPath.row) {
return 100;
}
return 50;
}
答案 1 :(得分:0)
SDNestedTable
完全符合您的要求。
模块概念是具有的所有默认功能 一个
UITableView
及其单元格,同时为每个单元格添加 小孩UITableView
。主要的每个单元格(SDGroupCell
)SDNestedTableViewController
tableview充当自己的控制器 子表。表的状态,人口和行为 subtable主要由SDNestedTableViewController
。
答案 2 :(得分:0)
这个电话,手风琴,这个网站有很好的例子(有演示),here's the link。
答案 3 :(得分:0)
基本上,当您使用TableView时,您应该使用多个节标题和单元格。 如果要使用节标题,则在想要展开它时,应将numberOfRowsInSection设置为0(汇总)为X.之后打电话
tableView.reloadData
我在这里用动画实现了这种行为,具有不同的高度:
答案 4 :(得分:0)
有许多关于此功能的开源项目。我已经下载了一些项目,对我来说最可定制和无问题的是SLExpandableTableView
答案 5 :(得分:0)
如果您正在寻找可扩展视图的直接易于设置的库,HVTableView是您的选择。它提供了可接受的性能,足以在常规项目中使用。