- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if (!_logUploadView.hidden) {
_logUploadView.hidden = YES;
}
if (_cellInfos.count < indexPath.row)
return ;
MainTableViewCell *currentCell = [tableView cellForRowAtIndexPath:indexPath];
CellInfo* cellInfo = currentCell.cellData;
if (cellInfo.subCells != nil) {
[tableView beginUpdates];
NSMutableArray *indexArray = [NSMutableArray new];
if (self.addNewCellInfos) {
NSUInteger deleteFrom = [_cellInfos indexOfObject:self.addNewCellInfos[0]];
for (int i = 0; i < self.addNewCellInfos.count; i++) {
[indexArray addObject:[NSIndexPath indexPathForRow:i+deleteFrom inSection:0]];
}
[tableView deleteRowsAtIndexPaths:indexArray withRowAnimation:UITableViewRowAnimationAutomatic];
[_cellInfos removeObjectsInArray:self.addNewCellInfos];
}
[tableView endUpdates];
[tableView beginUpdates];
if (!cellInfo.isUnFold) {
self.selectedCell.highLight = NO;
self.selectedCell.cellData.isUnFold = NO;
NSUInteger row = [_cellInfos indexOfObject:cellInfo]+1;
[indexArray removeAllObjects];
for (int i = 0; i < cellInfo.subCells.count; i++) {
[indexArray addObject:[NSIndexPath indexPathForRow:i+row inSection:0]];
}
[_cellInfos insertObjects:cellInfo.subCells atIndexes:[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(row, cellInfo.subCells.count)]];
[tableView insertRowsAtIndexPaths:indexArray withRowAnimation:UITableViewRowAnimationAutomatic];
}
[tableView endUpdates];
cellInfo.isUnFold = !cellInfo.isUnFold;
currentCell.highLight = cellInfo.isUnFold;
self.selectedCell = currentCell;
if (cellInfo.isUnFold) {
self.addNewCellInfos = cellInfo.subCells;
} else {
self.addNewCellInfos = nil;
}
return;
}
}