ios - ¿Cómo eliminar celdas vacías en UITableView?
objective-c (11)
En el Guión gráfico, seleccione el UITableView
y modifique el estilo de la propiedad de Plain
a Grouped
.
Esta pregunta ya tiene una respuesta aquí:
Estoy tratando de mostrar un simple UITableView
con algunos datos. Deseo establecer la altura estática de UITableView
para que no muestre celdas vacías al final de la tabla. ¿Cómo puedo hacer eso?
código:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
NSLog(@"%d", [arr count]);
return [arr count];
}
Establezca una vista de pie de página de altura cero (tal vez en su método viewDidLoad
), así:
Rápido:
tableView.tableFooterView = UIView()
C objetivo:
tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];
Debido a que la tabla cree que hay un pie de página para mostrar, no muestra ninguna celda más allá de las que solicitó explícitamente.
Constructor de interfaces pro-tip:
Si está utilizando un xib / Storyboard , solo puede arrastrar una UIView (con altura 0pt) a la parte inferior de la UITableView.
Implementado con swift en Xcode 6.1
self.tableView.tableFooterView = UIView(frame: CGRectZero)
self.tableView.tableFooterView?.hidden = true
La segunda línea de código no causa ningún efecto en la presentación, puede utilizar para verificar si está oculto o no.
Respuesta tomada de este enlace No se pueden ocultar las celdas vacías en UITableView Swift
Probé el código:
tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];
En la sección viewDidLoad y xcode6 mostró una advertencia. He puesto un "yo". En frente de ella y ahora funciona bien. así que el código de trabajo que uso es:
self.tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];
en el siguiente método:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
if (([array count]*65) > [UIScreen mainScreen].bounds.size.height - 66)
{
Table.frame = CGRectMake(0, 66, self.view.frame.size.width, [array count]*65));
}
else
{
Table.frame = CGRectMake(0, 66, self.view.frame.size.width, [UIScreen mainScreen].bounds.size.height - 66);
}
return [array count];
}
aquí 65 es la altura de la celda y 66 es la altura de la barra de navegación en UIViewController.
en viewDidLoad:
self.tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];
o puede llamar al método tableView para establecer la altura del pie de página en 1 punto, y agregará una última línea, pero también puede ocultarlo, configurando el color de fondo del pie de página.
código:
func tableView(tableView: UITableView,heightForFooterInSection section: Int) -> CGFloat {
return 1
}
No puedo agregar comentarios a partir de ahora, así que agregar esto como una respuesta.
@ La respuesta de Andy es buena y se pueden lograr los mismos resultados con la siguiente línea de código:
tableView.tableFooterView = [UIView new];
El método ''nuevo'' pertenece a la clase NSObject e invoca los métodos de asignación e inicio para UIView.
Sintaxis de Swift 3:
tableView.tableFooterView = UIView(frame: .zero)
Sintaxis Swift: <2.0
tableView.tableFooterView = UIView(frame: CGRect.zeroRect)
Sintaxis Swift 2.0:
tableView.tableFooterView = UIView(frame: CGRect.zero)
Usando UITableViewController
La solución aceptada cambiará la altura del TableViewCell
. Para arreglar eso, realice los siguientes pasos:
Escriba el fragmento de código que se proporciona a continuación en el método
ViewDidLoad
.tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];
Agregue el siguiente método en el archivo
TableViewClass.m
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { return (cell height set on storyboard); }
Eso es. Puedes construir y ejecutar tu proyecto.
override func viewWillAppear(animated: Bool) {
self.tableView.tableFooterView = UIView(frame: CGRect.zeroRect)
/// OR
self.tableView.tableFooterView = UIView()
}