186 votos

Se puede forzar un UITableView para ocultar el separador entre las celdas vacías?

Cuando se utiliza una llanura de estilo UITableView con un número suficientemente grande de células que UITableView no puede mostrar todas ellas sin necesidad de desplazamiento, sin separadores aparecen en el espacio vacío debajo de las células. Si sólo tengo un par de células en el espacio vacío debajo de ellos incluye separadores.

¿Hay alguna manera de que me puede obligar a un UITableView a quitar los separadores en el espacio vacío? Si no voy a tener que cargar un fondo personalizado con un separador dibujado en cada celda que se va a hacer más difícil para heredar el comportamiento.

He encontrado algo parecido pregunta aquí, pero no los puedo usar un agrupados UITableView en mi aplicación.

207voto

J. Costa Puntos 3776

Para iOS 7.* y iOS 6.1

El método más sencillo es establecer el tableFooterView de la propiedad:

- (void)viewDidLoad 
{
    [super viewDidLoad];

    // This will remove extra separators from tableview
    self.tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];
}

Para versiones anteriores

Podría añadir esto a su TableViewController (este trabajo para cualquier número de secciones):

- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
     // This will create a "invisible" footer
     return 0.01f;
 }

y si no es suficiente, agregue el código siguiente también:

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
{        
    return [UIView new];

    // If you are not using ARC:
    // return [[UIView new] autorelease];
}

108voto

Daniel Hepper Puntos 4992

Usted puede lograr lo que desea mediante la definición de un pie de página para el formato tableview. Ver esta respuesta para más detalles:Eliminar el exceso de separadores por debajo de UITableView

67voto

AngeDeLaMort Puntos 1375

Con el enlace de Daniel, hice una extensión para hacerlo más utilizable:

//UITableViewController+Ext.m
- (void)hideEmptySeparators
{
    UIView *v = [[UIView alloc] initWithFrame:CGRectZero];
    v.backgroundColor = [UIColor clearColor];
    [self.tableView setTableFooterView:v];
    [v release];
}

Después de algunas pruebas, me enteré de que el tamaño puede ser 0 y funciona bien. Así que no se le añade algún tipo de margen al final de la tabla. Así que gracias wkw para este hack. Me decidí a publicar que aquí ya no me gusta la redirección.

7voto

duncanwilcox Puntos 2923

Configuración de la tabla separatorStyle a UITableViewCellSeparatorStyleNone (en el código o en IB) debe hacer el truco.

5voto

Dare2Dream Puntos 354

Yo uso la siguiente:

UIView *view = [[UIView alloc] init];
myTableView.tableFooterView = view;
[view release];

Hacerlo en viewDidLoad. Pero se puede establecer en cualquier lugar.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by: