Elimine separadores adicionales debajo de UITableView
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?
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).
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];
}
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.
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()
}
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 :)