Cómo ocultar UITableViewCells sin violar restricciones de AutoLayout

Actualmente estoy trabajando en una aplicación para aprender la progtwigción de iOS y Swift. Tengo una vista que contiene dos subvistas principales, una MKMapView y una UITableView. Cuando se selecciona una determinada anotación en MapView, quiero que se oculten ciertas celdas de TableView. Si la anotación es deseleccionada, las células deben reaparecer. Actualmente hago esto estableciendo la altura para que las celdas se oculten a 0 y invocando tableView.beginUpdates() tableView.endUpdates() , sin embargo, esto hace que se rompa todo tipo de restricciones de AutoLayout dentro de mis celdas personalizadas. También he intentado establecer la propiedad oculta en la celda en true antes de establecer el alto en 0, pero las restricciones de AutoLayout todavía se están rompiendo.

¿Cuál sería la forma correcta de hacer esto?

Gracias por adelantado.

Mis 2 centavos: solo intenta networkingucir la prioridad de una de las restricciones en conflicto a un valor más bajo, como UILayoutPriorityDefaultHigh (750 si se usa en Interface Builder) o incluso más bajo, depende de cómo se componga la celda. Debería ser suficiente para dar al sistema de layout automático una pista sobre qué restricción puede romperse con security. Probablemente querrá romper la restricción que define la distancia desde el margen inferior.

Implementación de heightForRowAtIndexPath: como a continuación. También debe establecer la restricción de altura a 0

Versión objc

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

Versión Swift

  override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { if shouldHideCell { return 0 } else { return UITableViewAutomaticDimension } }