ios uitableview ios7 uipopovercontroller

¿Cómo evito que el color del separador de UITableView se ponga negro en UIPopoverController(iOS7)?



(4)

Dos recomendaciones:
1. No use UITableViewController en absoluto. El comportamiento automatizado que proporciona se puede implementar fácilmente con unas pocas llamadas y también rompe las buenas prácticas de OOP .
2. Acerca de los separadores, no muestre separadores, pero agregue un UIView en cada celda en la parte inferior con un ancho igual al ancho y la altura de la celda de 1 punto.

Mi aplicación utiliza un UITableViewController, que es un elemento secundario de UINavigationController, que es el controlador de vista de contenido de un UIPopoverController. Estoy personalizando la apariencia de UITableView del UITableViewController. Funciona perfectamente para iOS 5 y 6, pero tiene un problema en iOS7. Los separadores de las celdas se configuran en color blanco, y la vista de tabla aparece inicialmente con el color de separador correcto. Sin embargo, una vez que desplazo la vista de tabla y las celdas se vuelven a cargar (es decir, se invocan las funciones cellForRowAtIndexPath y willDisplayCell), los separadores de las celdas nuevamente cargadas son todas negras.

Estoy personalizando el color del separador llamando a esta función en la función viewDidLoad de UITableViewController:

self.tableView.separatorColor = [UIColor whiteColor];

Si uso exactamente la misma vista de tabla en otra parte de la aplicación (no en un UIPopoverController), entonces no tengo este problema.

Por lo que puedo decir, no hay nada en la documentación que indique que esto debería funcionar de manera diferente para iOS 7 que para 5 o 6. ¿Quizás es un error de iOS? Cualquier ayuda sería muy apreciada.


configurar esto en viewwillAppear

- (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; self.tableView.separatorColor = [UIColor whiteColor]; }

espero que esto ayude


El problema era un error de iOS: el problema ya no ocurre para mí para iOS7.0.4. No sé exactamente en qué versión se ha corregido. Por lo tanto, no es necesario volver a cargar los datos o establecer separatorColor en viewWillAppear. Es suficiente hacer esto en viewDidLoad.


Este error de iOS aún ocurre en iOS7.0.6. Tenía una mesa con fondo negro y líneas blancas de separación. Las líneas de separación se muestran correctamente en blanco en la primera vista de UIPopover , pero aparecen negras en la segunda y en las pantallas posteriores del mismo popover.

Usar reloadData en la vista de tabla no ayudó.

La única solución práctica que pude encontrar fue la siguiente, que hace que toda la tabla se vuelva a dibujar:

- (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; [_tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationNone]; } - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; [_tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationNone]; }

Notas

1) Si usa solo el código viewWillAppear , las líneas de separación aparecen correctamente por un instante antes de volver a negro. Si usa solo el código viewDidAppear , entonces hay un retraso notable antes de que las líneas del separador se vuelvan blancas, después de que se muestre el popover. El uso de BOTH proporciona el resultado más perfecto para el usuario.

2) Si su tabla tiene más de una sección, entonces debe asegurarse de que todas las secciones se vuelvan a cargar, ya que el usuario puede haberse desplazado a otra sección antes de que se ocultara el popover.

PD: después de más pruebas, descubrí que incluso esta solución no es perfecta. Después de volver a mostrar, si desplaza la tabla, los separadores que inicialmente estaban fuera de pantalla vuelven a ser negros. Por lo tanto, funciona correctamente solo si la tabla no tiene suficientes filas para ir más allá del tamaño del popover.