Есть ли этот контроль, который я действительно ценю: github link проблема в том, что теперь у меня есть ситуация, когда мне нужно открыть одну строку и все предыдущие должны закрыться, в то время у меня может быть только одна открытая строка.
Поскольку я не очень разбираюсь в xcode, мне нужна информация о том, где я должен начать, и необходимые шаги для того, чтобы код работал так, как мне нужно прямо сейчас.
Мне удалось сделать несколько тестов, но не жизнеспособное решение, вот что я имею прямо сейчас:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    [tableView deselectRowAtIndexPath:indexPath animated:YES];
    NSInteger row = indexPath.row;
    if (indexPath.section == 0) {
        NSLog(@"indexPath1 = %i", selectedRow);
        NSDictionary *d = [self.firstForTable objectAtIndex:indexPath.row];
        if([d valueForKey:@"Objects"]) {
            NSArray *ar = [d valueForKey:@"Objects"];
            NSUInteger count = indexPath.row +1;
            NSMutableArray *arCells = [NSMutableArray array];
            for(NSDictionary *dInner in ar ) {
                [arCells addObject:[NSIndexPath indexPathForRow:count inSection:0]];
                [self.firstForTable insertObject:dInner atIndex:count++];
            }
            [tableView insertRowsAtIndexPaths:arCells withRowAnimation:UITableViewRowAnimationLeft];
        }
        else {
            NSLog(@"Leave Element:::%@ %@|",[d valueForKey:@"name"],[d valueForKey:@"book"]);
        }
        if (selectedRow == row) {
            NSLog(@"selectedRow2 = %i",selectedRow);
            NSDictionary *d=[self.firstForTable objectAtIndex:selectedRow];
            if([d valueForKey:@"Objects"]) {
                NSArray *ar = [d valueForKey:@"Objects"];
                [self miniMizeFirstsRows:ar];
            }
            selectedRow = -1;
            return;
        }
        if (selectedRow >= 0) {
            NSLog(@"selectedRow3 = %i",selectedRow);
            NSDictionary *d=[self.firstForTable objectAtIndex:selectedRow];
            if([d valueForKey:@"Objects"]) {
                NSArray *ar = [d valueForKey:@"Objects"];
                [self miniMizeFirstsRows:ar];
            }
            selectedRow = row;
        }
        selectedRow = row;
        [tableView beginUpdates]; [tableView endUpdates];
    }
    if (indexPath.section == 1) {
        NSDictionary *d = [self.secondForTable objectAtIndex:indexPath.row];
        if([d valueForKey:@"Objects"]) {
            NSArray *ar = [d valueForKey:@"Objects"];
            BOOL isAlreadyInserted=NO;
            for (NSDictionary *dInner in ar) {
                NSInteger index = [self.secondForTable indexOfObjectIdenticalTo:dInner];
                isAlreadyInserted = (index > 0 && index != NSIntegerMax);
                if (isAlreadyInserted) break;
            }
            if (isAlreadyInserted) {
                [self miniMizeSecondsRows:ar];
            }
            else {
                NSUInteger count = indexPath.row+1;
                NSMutableArray *arCells = [NSMutableArray array];
                for (NSDictionary *dInner in ar ) {
                    [arCells addObject:[NSIndexPath indexPathForRow:count inSection:1]];
                    [self.secondForTable insertObject:dInner atIndex:count++];
                }
                [tableView insertRowsAtIndexPaths:arCells withRowAnimation:UITableViewRowAnimationLeft];
            }
        }
        else {
            NSLog(@"Leave Element:::%@ %@|",[d valueForKey:@"name"],[d valueForKey:@"book"]);
        }
    }
}
Спасибо в Advance.