Elimine separadores adicionales debajo de UITableView

Resuelto RoundOutTooSoon asked hace 54 años • 34 respuestas

Cuando configuro una vista de tabla con 4 filas, todavía hay líneas separadoras adicionales (o celdas en blanco adicionales) debajo de las filas llenas.

¿Cómo eliminaría estas células?

imagen para líneas separadoras adicionales en UITableView

RoundOutTooSoon avatar Jan 01 '70 08:01 RoundOutTooSoon
Aceptado

Creador de interfaces (iOS 9+)

Simplemente arrastre una UIView a la mesa. En el guión gráfico, se ubicará en la parte superior debajo de las celdas personalizadas. Quizás prefieras llamarlo "pie de página".

Aquí se muestra en verde para mayor claridad; probablemente querrás un color claro.

Tenga en cuenta que al ajustar la altura, puede afectar cómo se maneja el "rebote inferior" de la mesa, como prefiera. (La altura cero suele estar bien).

ingrese la descripción de la imagen aquí


Para hacerlo mediante programación:

Rápido

override func viewDidLoad() {
    super.viewDidLoad()
    self.tableView.tableFooterView = UIView()
}

C objetivo

iOS 6.1+

- (void)viewDidLoad 
{
    [super viewDidLoad];

    // This will remove extra separators from tableview
    self.tableView.tableFooterView = [UIView new];
}

o si lo prefieres,

    self.tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];

Históricamente en iOS:

Agregar al controlador de vista de tabla...

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

y si es necesario...

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

    // If you are not using ARC:
    // return [[UIView new] autorelease];
}
J. Costa avatar Mar 21 '2011 12:03 J. Costa

Aquí hay otra forma de hacerlo sin el estilo de tabla agrupada, y una que probablemente no adivinarías. Agregar un encabezado y un pie de página a la tabla (quizás uno u otro sea suficiente, no lo he verificado) hace que los separadores desaparezcan de las filas de relleno/en blanco.

Me topé con esto porque quería un poco de espacio en la parte superior e inferior de las mesas para disminuir el riesgo de presionar botones en lugar de una celda de la mesa con dedos carnosos. A continuación se muestra un método para incluir una vista en blanco como encabezado y pie de página. Use la altura que desee, aún así eliminará las líneas separadoras adicionales.

- (void) addHeaderAndFooter
{
    UIView *v = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 10)];
    v.backgroundColor = [UIColor clearColor];
    [self.myTableView setTableHeaderView:v];
    [self.myTableView setTableFooterView:v];
    [v release];
}

En respuesta a @Casebash, volví al código de mi aplicación (Administrador de listas "AcmeLists" en la tienda iTunes...) y cortocircuité el método addHeaderAndFooter para verificar. Sin él , tengo separadores de filas adicionales; Con el código, tengo lo que ves en esta ventana: sin imagen de separadores de filas de tabla . Así que no estoy seguro de por qué no habría funcionado para ti. Además, para mí tiene sentido que tener un pie de página personalizado en una vista de tabla necesariamente tenga que dejar de dibujar separadores de filas para las filas en blanco debajo de él. Eso sería espantoso. Como referencia, miré tablas en las que había más filas de las que se podían ver en la pantalla y luego busqué una tabla con dos filas. En ambos casos no hay separadores extraños.

Quizás sus vistas personalizadas no se agregaron realmente. Para comprobarlo, establezca el color de fondo en otro que no sea clearColor, por ejemplo, [UIColor redColor]. Si no ve algunas barras rojas en la parte inferior de la tabla, su pie de página no estaba configurado.

wkw avatar Nov 24 '2009 12:11 wkw

Eliminar líneas separadoras adicionales para filas vacías en UITableView en Swift

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
    self.yourTableview.tableFooterView = UIView()
}
dineshthamburu avatar Oct 29 '2014 05:10 dineshthamburu

Me gustaría ampliar la respuesta de wkw :

Simplemente agregar solo un pie de página con altura 0 será suficiente. (probado en SDK 4.2, 4.4.1)

- (void) addFooter
{
    UIView *v = [[UIView alloc] initWithFrame:CGRectZero];

    [self.myTableView setTableFooterView:v];
}

o incluso más simple: cuando configures tu vista de tabla, agrega esta línea:

//change height value if extra space is needed at the bottom.
[_tableView setTableFooterView:[[UIView alloc] initWithFrame:CGRectMake(0,0,0,0)]];

o incluso más simple: simplemente eliminar los separadores:

[_tableView setTableFooterView:[UIView new]];

Gracias a wkw de nuevo :)

Guntis Treulands avatar Mar 24 '2012 16:03 Guntis Treulands