UITableView multinivel?

Se necesita hacer una gran cantidad de tablas. Por ejemplo, al inicio solo tenemos 3 celdas
1d09805ad46be36022dc59a7bb3b88f1.png


Y más allá del nivel 3


Entiendo que esto se hace de manera simple insertRowsAtIndexPaths Pero mis datos se toman de diferentes arreglos. Creo que necesitas usar algún estado para cada caso. Pero no puedo entender cómo. Tal vez alguien hizo algo así? Compartir fragmentos;)

Respuestas
sarah funke donovan
Hice esto.

En la entrada de Mississ (NSArray), cada elemento tiene un nivel. Ejecutar a través de la matriz y crear una vista con un desplazamiento a la izquierda. Luego todo se metió en UITableViewCell.

 
-(void) flateCommentsData:(NSArray *)_data withLevel:(NSInteger)level
{
  NSEnumerator * dataEnum = [_data objectEnumerator];
  
  NSDictionary * commentData;
  
  while (commentData = [dataEnum nextObject])
  {
    SModelComment * commentModel = [[SModelComment alloc]init];
    
    [commentModel set:@"id" withValue:[commentData objectForKey:@"id"]];
    [commentModel set:@"text" withValue:[commentData objectForKey:@"text"]];
    [commentModel set:@"userId" withValue:[commentData objectForKey:@"userId"]];
    [commentModel setLevel:level];
    
    CGRect cellRect = CGRectMake(commentModel.level*5, 0, 320 - commentModel.level*5, 0);
    UIView * cellView = [[UIView alloc] initWithFrame: cellRect];
    
    //add avatar
    SModelUser * user = [SModelUserPeer loadObjectById:[commentModel get:@"userId"]];
    UIImageView * avatarView = [[UIImageView alloc] initWithImage: user.smallAvatar.image ];
    avatarView.frame = CGRectMake(5, 7, 35, 35);
    [cellView addSubview:avatarView];
    
    //add username
    UILabel * usernameLabel = [[UILabel alloc] initWithFrame:CGRectMake(45, 5, cellRect.size.width - 75, 20)];
    usernameLabel.font = [UIFont boldSystemFontOfSize:14.0];
    usernameLabel.text = [user get:@"fullName"];
    [cellView addSubview:usernameLabel];
        
    //add text
    CGRect cellTextRect = CGRectMake(45, 25, cellRect.size.width - 75, 0);
    UILabel * cellTextLabel = [[UILabel alloc] initWithFrame:cellTextRect];
    cellTextLabel.text = [commentModel get:@"text"];
    cellTextLabel.font = [UIFont systemFontOfSize:12.0];
    cellTextLabel.numberOfLines = 0;
    [cellTextLabel sizeToFit];
    cellTextLabel.backgroundColor = [UIColor whiteColor];
    [cellView addSubview:cellTextLabel];
    
    
    CGRect textFrame = cellTextLabel.frame;
    textFrame.size.height = textFrame.size.height + 10 + usernameLabel.frame.size.height
    ;
    textFrame.size.height = textFrame.size.height > 50 ? textFrame.size.height : 50;

    cellRect.size.height = textFrame.size.height;
    cellView.frame = cellRect;
        
    NSMutableDictionary * item = [[NSMutableDictionary alloc] initWithCapacity:2];
    [item setObject:cellView forKey:@"view"];
    [item setObject:commentModel forKey:@"model"];
    
    [commentsList addObject:item];
    
    if ([commentData objectForKey:@"childs"])
    {
      [self flateCommentsData:[commentData objectForKey:@"childs"] withLevel:level+1];
    }
  }
}


entonces

 
-(UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
	NSDictionary * item = [commentsList objectAtIndex:indexPath.row]; 
	UIView * cellView   = [item objectForKey:@"view"];
	SModelComment * commentModel = [item objectForKey:@"model"];
	
	NSString * CellIdentifier = [NSString stringWithFormat:@"comment_cell_%d", [commentModel get:@"id"]];
	
	UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
	
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }
	
	cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
	[cell.contentView addSubview:cellView];

    return cell;	
}
* con un desplazamiento a la izquierda
con un cambio a la derecha según el nivel - mojgan
Así que colgué métodos que filtraron | ordenó la matriz e hice una recarga de la sección - payam
¡Qué horror! ¿Que el estándar UITableViewCellStyleSubtitle, cell.textLabel, cell.detailTextLabel, cell.imageView, cell.indentationLevel y cell.indentationWidth no son adecuados? - danceluvr211
No recuerdo exactamente lo que no me convenía. Muestra un ejemplo de trabajo de lo que dices. Con una altura de bloque dinámico, en mi caso, celdas de diferentes alturas en función del número de texto. - anthony renfro