Expandable tableView in iphone

前端 未结 12 1734
离开以前
离开以前 2020-11-27 17:53

\"enter

I want to make this type of expandable/collapsible table vie

12条回答
  •  余生分开走
    2020-11-27 18:39

    Use Following code for expandable Cell into UITableView

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        static NSString *CellIdentifier = @"Cell";   
        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
        if (cell == nil) {
            cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
        }
        cell.textLabel.text=[[self.arForTable objectAtIndex:indexPath.row] valueForKey:@"name"];
        [cell setIndentationLevel:[[[self.arForTable objectAtIndex:indexPath.row] valueForKey:@"level"] intValue]];    
        return cell;
    }
    

    code for expanding & collapsing rows – TableView DidSelectRow Method

    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
    {
        [tableView deselectRowAtIndexPath:indexPath animated:YES];
        NSDictionary *d=[self.arForTable objectAtIndex:indexPath.row];
        if([d valueForKey:@"Objects"]) {
            NSArray *ar=[d valueForKey:@"Objects"];
            BOOL isAlreadyInserted=NO;
            for(NSDictionary *dInner in ar ){
                NSInteger index=[self.arForTable indexOfObjectIdenticalTo:dInner];
                isAlreadyInserted=(index>0 && index!=NSIntegerMax);
                if(isAlreadyInserted) break; 
            }
            if(isAlreadyInserted) {
                [self miniMizeThisRows:ar];
            } else {        
                NSUInteger count=indexPath.row+1;
                NSMutableArray *arCells=[NSMutableArray array];
                for(NSDictionary *dInner in ar ) {
                    [arCells addObject:[NSIndexPath indexPathForRow:count inSection:0]];
                    [self.arForTable insertObject:dInner atIndex:count++];
                }
                [tableView insertRowsAtIndexPaths:arCells withRowAnimation:UITableViewRowAnimationLeft];
            }
        }
    }
    

    A Method which will help to minimize & maximize/expand-collapse rows.

    -(void)miniMizeThisRows:(NSArray*)ar{
        for(NSDictionary *dInner in ar ) {
            NSUInteger indexToRemove=[self.arForTable indexOfObjectIdenticalTo:dInner];        
            NSArray *arInner=[dInner valueForKey:@"Objects"];
            if(arInner && [arInner count]>0){
                [self miniMizeThisRows:arInner];
            }
            if([self.arForTable indexOfObjectIdenticalTo:dInner]!=NSNotFound) {
                [self.arForTable removeObjectIdenticalTo:dInner];
                [self.tableView deleteRowsAtIndexPaths:
                  [NSArray arrayWithObject:[NSIndexPath indexPathForRow:indexToRemove inSection:0]]
                          withRowAnimation:UITableViewRowAnimationRight];
            }
        }
    }
    

    You can download the source code from my tutorial site.

提交回复
热议问题