在
在
基本上我的观点是我有customTableViewCell,它最右边有一个按钮(与image1“show version history”相同)。当我点击它时,我想添加一个动态数量的subviewCell,它位于customTableViewCells下。
我的问题是,这是如何实施的?你有什么图书馆可以参考吗?
答案 0 :(得分:1)
查看这些表视图实现
https://www.cocoacontrols.com/controls/jkexpandtableview
https://www.cocoacontrols.com/controls/sdnestedtable
https://www.cocoacontrols.com/controls/uiexpandabletableview
答案 1 :(得分:1)
我希望你没有搜索它: 我们来看看这些链接:
答案 2 :(得分:1)
这很容易。
tableView:numberOfRowsInSection:
中为可展开部分t:numberOfRowsInSection:
tableView:didSelectRowAtIndexPath:
中,您在点击第一个单元格时切换展开状态,然后插入或删除展开的行。 例如:
@interface MBMasterViewController () {
BOOL firstSectionExpanded;
}
@end
@implementation MBMasterViewController
#pragma mark - Table View
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 3;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
NSInteger count = 1;
if (section == 0 && firstSectionExpanded) { count = 3; }
return count;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];
if (indexPath.row == 0) {
cell.textLabel.text = [NSString stringWithFormat:@"Section %ld", (long)indexPath.section];
}
else {
cell.textLabel.text = [NSString stringWithFormat:@"Sub Cell %ld", (long)indexPath.row];
}
return cell;
}
- (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath {
if (indexPath.row != 0) {
// don't select sub cells
return nil;
}
return indexPath;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
NSArray *cells = @[ [NSIndexPath indexPathForRow:1 inSection:indexPath.section],
[NSIndexPath indexPathForRow:2 inSection:indexPath.section]];
NSArray *cellsToDelete;
NSArray *cellsToInsert;
if (indexPath.section == 0) {
if (firstSectionExpanded) {
cellsToDelete = cells;
}
else {
cellsToInsert = cells;
}
firstSectionExpanded = !firstSectionExpanded;
}
if (cellsToDelete) {
[tableView deleteRowsAtIndexPaths:cellsToDelete withRowAnimation:UITableViewRowAnimationAutomatic];
}
if (cellsToInsert) {
[tableView insertRowsAtIndexPaths:cellsToInsert withRowAnimation:UITableViewRowAnimationAutomatic];
}
[tableView deselectRowAtIndexPath:indexPath animated:YES];
}