Establezca la vista de tabla de Dynamic Cell Altura de contenido a las restricciones de altura de vista de tabla ios

Tengo tableview (A) cada celda personalizada que tiene tableview (B) con celda de vista de tabla dinámica.

En tableview (A) cellForRowAtIndex.

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ MainMessageTVCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MsgMainCell"]; cell.selectionStyle = UITableViewCellSelectionStyleNone; NSInteger index = indexPath.row; MessageMain *result = tableData[index]; cell.dateLabelTC.text = [NSString stringWithFormat:@"Date : %@",result.createdTime]; cell.subjectLabelTC.text = [NSString stringWithFormat:@"Subject : %@",result.subject]; NSArray *arrList = result.messageList; [cell setupTableData:(NSMutableArray *)arrList]; [cell setNeedsUpdateConstraints]; } 

En la vista de tabla de recarga de celdas personalizada de tableview (A) (B).

 -(void)setupTableData:(NSMutableArray *)tableData{ _tableData = tableData; [self.tableView reloadData]; } -(void)updateConstraints{ [super updateConstraints]; dispatch_async(dispatch_get_main_queue(), ^{ [self.tableView layoutIfNeeded]; CGFloat height = self.tableView.contentSize.height;//+1000; tableBHeightConstraints.constant = height; }); } 

tableBHeightConstraints es la restricción de altura de la vista de tabla (B) en la tabla de niños (A). tableBHeightConstraints.constant no obtiene el valor correcto con todas las restricciones de cálculo.

cuál es el mejor lugar o método para get tableView.contentSize.height exacto después del set de altura de celda de tabla dinámica.

Esta es la celda de la vista de tabla (A) introduzca la descripción de la imagen aquí

introduzca la descripción de la imagen aquí

Esta es la celda de vista de tabla (B)

Por favor ayuda chicos

Agregue el siguiente código en el método viewDidLoad.

  self.tableView.rowHeight = UITableViewAutomaticDimension; [self.tableView setEstimatedRowHeight:85.0]; 

También incluya el método estimatedHeightForRowAtIndexPath y devuelva una altura de fila estimada como sigue,

 - (CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath { return 100; } 

Asigne una dimensión automática para heightForRowAtIndexPath. El método le pide al delegado que use la altura para una fila en una location especificada.

 - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { return UITableViewAutomaticDimension; } 

NOTA

Para que la fila de la tabla sea de altura dinámica, las tags dentro de la vista de contenido deben estar fijadas a la parte superior e inferior de modo que puedan encoger o crecer según el contenido. ¿Me actualizas en caso de que te encuentres con alguna dificultad?

Si no puedes hacer que esto funcione, entonces ¿por qué no probar algo diferente? En lugar de tratar de pegar un tableView en un tableCell, ¿por qué no modificar su fuente de datos para gobernar las dos tablas como una sola. Probablemente sea una solución mejor ya que debería ser más eficiente y funcionar mejor como una sola tabla.

Si usa el estilo agrupado, entonces, efectivamente, cada grupo es un tableView individual con un encabezado y un pie de página.

Prueba esto :

Tome una restricción de altura de UItableView

_tableViewHieghtConstraint.constant = altura de la fila * recuento de la matriz.

en el número de tableview del método de sección.

Es mejor simplemente establecer la restricción a la misma altura:

 tableA_cell.contentView height = TableB height 

Con restricciones visuales sería algo como esto:

 NSDictionary *viewsDictionary = NSDictionaryOfVariableBindings(tableB); [cell.contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V|[tableB|" options:0 metrics:0 views:viewsDictionary]; 

Entonces la magia debería suceder por sí misma.

Si realiza algún cambio en la tabla B, simplemente llame

 [self.tableView beginUpdates] [self.tableView endUpdates] 

en la tabla A para actualizar automáticamente la altura de sus celdas

Intente mover sus cambios de -(void) updateConstraints en -(void) viewDidLayoutSubviews .

 -(void)viewDidLayoutSubviews{ [super viewDidLayoutSubviews]; dispatch_async(dispatch_get_main_queue(), ^{ [self.tableView layoutIfNeeded]; CGFloat height = self.tableView.contentSize.height;//+1000; tableBHeightConstraints.constant = height; }); 

}