altura para fila en indexPath arrojando error de acceso incorrecto de EXC

 if([indexPath row] == ([tableView numberOfRowsInSection:[indexPath section]-1])) { return 44.0; } else { return 60.0; } 

[indexPath section]-1 para la sección con el índice "0" te está dando un mal acceso. Retire -1 de esta statement.

Una mejor solución para resolver su requerimiento es no pedirle a tableview cuántas filas hay en una sección, en lugar de preguntar a su fuente de datos cuántas filas hay.

Por ejemplo, si su fuente de datos es una matriz, compruebe array.count (por supuesto, tiene otra fuente de datos ya que tiene secciones, pero obtiene el punto)

de acuerdo con su lógica [indexPath section]-1 el número de filas en la primera sección que es la sección 0 debe ser -1

Sé que esta es una vieja pregunta, pero podría ser útil para otros en el futuro.

Solución:

 - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { NSInteger numOfRowsInSection = [tableView.dataSource tableView:tableView numberOfRowsInSection:indexPath.section]; if (indexPath.row == (numOfRowsInSection - 1)) return 44.0; else return 60.0; } 

Explicación:

Lo que está sucediendo es para cada [tableView numberOfRowsInSection:[indexPath section]] llamada que el sistema llama a [tableView heightForRowAtIndexPath:indexPath] nuevamente creando un bucle infinito y eventualmente la aplicación se está estrellando.

Utilice la propiedad dataSource de tableView para evitar el bucle, así:

 [tableView.dataSource tableView:tableView numberOfRowsInSection:[indexPath section]] 

Está utilizando un método tableView Delegate. Prueba esto:

  if([indexPath row] == ([self tableView:tableView numberOfRowsInSection:indexPath.section]-1))