2012-05-27 9 views
31

Quiero que mi tableView muestre 6 filas con texto, en este caso "Ejemplo". Por lo que puedo decir, tengo mi numberOfSectionsInTableView: y numberOfRowsInSection: establecidos correctamente. Consulte el código de ejemplo a continuación:UITableView que muestra más filas que las especificadas en numberOfRowsInSection:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{ 
    // Return the number of sections. 
    return 1; 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ 
    // Return the number of rows in the section. 
    return 6; 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath{ 

    static NSString *CellIdentifier = @"Cell"; 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) { 
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; 
    } 

    cell.textLabel.text = @"Example"; 

    return cell; 
} 

El problema es cuando se ve la imagen de abajo muestra las líneas de filas que no/debería no existen.

enter image description here

¿Cómo deshacerse de las líneas que muestran fila pasado 6?

+3

Este es el comportamiento por defecto de todas las vistas de tabla lisos con un menor número de filas que se necesita para desplazarse, así que simplemente establecer el número de filas y secciones no ayudará. Necesitarás encontrar otra forma ... – BoltClock

Respuesta

55

El generally accepted way de hacer esto es añadir una vista de pie de página con un tamaño de fotograma de CGRectZero, como tal:

[tableView setTableFooterView:[[UIView alloc] initWithFrame:CGRectZero]] 

Lo que esto hace es decirle a la mesa que hay una pie de página, por lo que deja de mostrar líneas de separación. Sin embargo, como el pie de página tiene un CGRectZero como marco, no se muestra nada, por lo que el efecto visual es que los separadores simplemente se detienen.

+0

¿Cómo puedo eliminar las células adicionales? No quiero mostrarlos, prefiero mostrar el fondo gris que se muestra en los encabezados de las secciones. –

0

se podría hacer algo a lo largo de las líneas de:

NSIndexPath *indexPath = [NSIndexPath indexPathForRow:7 inSection:0]; 
[self.mytableView cellForRowAtIndexPath:indexPath].hidden = YES; 

Estoy seguro de que hay algunas formas mejores, pero este es el primero que me vino a la mente.

+0

Perdóname si esta es una pregunta estúpida, pero ¿dónde sugieres que ponga este código? (¿en qué método?) – tarheel

+0

En cualquier lugar que parezca apropiado –

0

Si se refiere a las líneas grises claras que aparecen debajo de la última fila, esa es simplemente la forma predeterminada en que UITableView dibuja el separador de filas.

Puede intentar cambiar el estilo del Separador en el Constructor de Interfaces (ver las imágenes a continuación) para ver si alguno de estos puede ser más de su agrado.

enter image description here enter image description here

+0

Gracias por la sugerencia, pero quiero que el separador de las filas existan, pero no se muestre ninguna de las restantes. – tarheel

0

No dijiste lo que quieres ver más allá de la última fila. Si solo desea ver el fondo de la ventana, simplemente incruste su vista de tabla en una UIView que sea lo suficientemente alta como para mostrar el número de filas que desea ver. Si desea ver más filas sin desplazarse, deberá ajustar el tamaño de esa vista en función del número de filas.

7

Esto es debido a su altura de vista de tabla. El tiempo que tiene Escribir

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ 

// Devuelve el número de filas en la sección. return 6; }

Pero se muestran las filas según el tamaño de la vista de tabla. Si no desea mostrar estas líneas adicionales, haga UITableView Style Normal para agrupar.

+0

+1 para UITableViewStyleGrouped –

+0

-1 para UITableViewStyleGrouped. Esto afecta la visualización completa de la tabla, no lo que pidió el interrogador. Eliminar los separadores es un efecto secundario de cambiar el estilo. Si el estilo agrupado se cambia en versiones posteriores para incluir separadores adicionales, este cambio de estilo es irrelevante. – Tim

+0

Agradable. Buena, fácil, solución rápida! –

-1

Para eliminar mediante programación, utilice esto: [yourTableView setSeparatorStyle:UITableViewCellSeparatorStyleNone];

+0

Esto eliminará las líneas de separación entre todas las celdas –

5

Respuesta corta y simple ..

self.tableView.tableFooterView = [UIView new]; 
20

Swift Versión

El método más fácil es establecer la propiedad tableFooterView:

override func viewDidLoad() { 
    super.viewDidLoad() 
    // This will remove extra separators from tableview 
    self.tableView.tableFooterView = UIView(frame: CGRect.zero) 
} 
+2

Swift 3: '= UIView (frame: CGRect.zero)' – fbynite

Cuestiones relacionadas