如何在UITableView – IOS中实现Expandable – 可折叠的UITableViewCell
我采取了UITableview
来获取单元格ExpandView
。 我想要这样的东西被实现。
所以, UITableView
将是最好的方法,或build议我任何好的实现方式,也无法让subview
根据screenSize
进行调整。
可能是有另一种方法来完成这一点,但这是我如何展开UITableViewCell
飞。 这可以给出这个想法,你可以实现你的解决scheme。
我在我的数据模型中保持行高:
- (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 }
当select改变时,只需更新数据源中的相关键。
-(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; }
这就是电话, 手风琴 ,这个网站有很好的例子(与演示),这是链接 。
基本上当你使用TableView的时候,你应该使用节号和单元格的数量。 在使用节标题的情况下,您应该将numberOfRowsInSection设置为0(向上滚动)到X当您要展开它。 那个电话之后
tableView.reloadData
我在这里用不同高度的animation实现了这个行为:
有许多关于这个function的开源项目。 我已经下载了几个项目,对于我来说,最可定制和无问题的是SLExpandableTableView
SDNestedTable
正是你想要的。
该模块的概念是具有
UITableView
及其单元的所有默认function,同时为每个单元添加一个子UITableView
。 主SDNestedTableViewController
tableview中的每个单元(SDGroupCell
)充当其自己的子表的控制器。 表和子表的状态,人口和行为主要由SDNestedTableViewController
控制。
如果您正在寻找一个简单易用的可扩展视图库, HVTableView是您的select。 它提供了可接受的性能,足以在常规项目中使用。
- dyld isuess(未加载库)
- 如何在Visual Studio 2015中设置OAuth以使用Google身份验证
- 与session.dataTaskWithRequest UIAlertView问题
- 错误的date从NSDateComponents回来
- UISearchBarController的iOS 11问题 – search栏和范围button重叠
- 如何从swift中的文档目录获取特定文件的NSURL
- 与Bitrise for iOS本机应用程序的持续集成
- 如何在iPhone应用程序中将2D图像转换为3D
- 在“〜/ Library / Developer / Xcode / iOS DeviceSupport”中缺lessiOS符号