uitableviewcell tutorial example custom ios swift uitableview ios11

tutorial - iOS 11 error de UITableView



uitableview swift4 (2)

El error se puede reproducir utilizando el repositorio here .

Tengo un error extraño que afecta a mi proyecto en iOS 11 en mi UITableView. El TableView en cuestión está agrupado, tiene celdas expandibles.

Ocurren muchos efectos extraños que no aparecen en mi rama de iOS 10:

  1. Títulos superpuestos
  2. problemas extraños de teletransporte cuando el tamaño del contenido está por encima del tamaño del contenedor UITableView cuando ocurre el colapso de las celdas
  3. Extraño teletransporte a la parte superior de la vista de tabla al principio del desplazamiento cuando el tamaño del contenido excede el tamaño del contenedor
  4. El tamaño de la celda es incorrecto (muy a menudo)

También hay un ticket que parece relacionado en el foro de desarrolladores de Apple here .

Lo intenté sin ningún éxito :

if #available(iOS 11.0, *) { tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentBehavior.never }

Estoy tratando de encontrar el comportamiento que cambió en iOS 11 que podría causar este problema.

¡Cualquier ayuda sería apreciada!

Edición: el recorte a límites ayudó (pero al final, oculta / recorta el problema). Todavía tengo algunos problemas (2, 3 y 4). Cuando intento desenvolver una celda, se teletransporta de nuevo a la parte superior en lugar de ir sin problemas. Cuando desenvuelvo una celda y quiero desplazarme hacia ella sin problemas, se teletransporta a la parte superior y luego solo se desplaza a ella. (Había que añadir una sección adicional para mostrar).

Aquí hay un video del problema (usando iPhone 7 Plus, iOS 11, Xcode 9 Golden Master): https://youtu.be/XfxcmmPdeoU


En iOS 11, todas las propiedades estimadas de UITableView ( estimatedRowHeight , estimatedSectionHeaderHeight y estimatedSectionFooterHeight ) están predeterminadas en UITableViewAutomaticDimension .

Veo que para tus celdas está bien ya que estás devolviendo UITableViewAutomaticDimension en heightForRow . Para los encabezados y pies de su sección, sin embargo, no está utilizando el tamaño automático. Intentaría deshabilitar todo el comportamiento de auto-dimensionamiento en sus encabezados / pies de página al establecer estimatedSectionHeaderHeight , estimatedSectionFooterHeight .

Fuente: iOS 11 Floating TableView Header


Pruebe este entorno de trabajo, asumiendo que sus IBOutlets y variables no son privadas en StandardHeaderView.swift:

func toggleSection(section: SectionType) { self.sectionsOpened[section] = !self.sectionsOpened[section]! let sectionIndex = self.sections.index(of: section)! let indexPath = IndexPath(row: 0, section: sectionIndex) UIView.animate(withDuration: 0.25) { self.tableView.reloadRows(at: [indexPath], with: .automatic) if let headerView = self.tableView.headerView(forSection: sectionIndex) as? StandardHeaderView { headerView.configWith(title: headerView.headerTitleLabel.text!, isOpen: self.sectionsOpened[section]!, selector: headerView.selector) } self.tableView.scrollToRow(at: IndexPath(row: 0, section: sectionIndex), at: .top, animated: true) } }