2011-05-24 30 views
9

Im usando una tabla vista para mostrar algo de información en una aplicación de prueba en la que estoy trabajando. Mi pregunta es cómo hago que la tabla solo muestre la cantidad de células que necesito. Ive establecer el número de filas método delegado de la siguiente manera:Cómo limitar el número de celdas que muestra UITableview?

-(NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    return 5; 
} 

pero en la parte inferior de la vista de tabla son celdas vacías que no son necesarios. Si configuro el estilo de vista de tabla para agruparme, obtengo 5 celdas y ninguna vacía debajo de ellas. He visto que otras personas han hecho esto, pero parece que no puede resolverlo. Me preguntaba si de alguna manera han agregado una vista personalizada al pie de página de la tabla para cancelar las celdas vacías.

Cualquier idea o ayuda apreciada.

+0

No está claro si desea evitar el uso del estilo agrupado o si tiene problemas para usarlo. –

+0

No tengo problemas implementando agrupado en UITableView's estándar. Estoy tratando de decir si uso agrupado y establezco el número de filas por sección en 5 cuando ejecuto la aplicación veo 5 filas y eso es todo, solo 5 filas. Si, por otro lado, uso la vista de tabla estándar y establezco el número de filas en 5 filas, veo que obtengo mis 5 filas, pero debajo de ellas hay un número adicional de filas vacías que no tienen contenido y no son necesarias, pero están poner allí solo para llenar la pantalla. –

Respuesta

1

Puede implementar heightForRowAtIndexPath: y calcular la altura correcta para mostrar solo 5 celdas en la pantalla.

0

La manera fácil sería encoger el tamaño de la mesa. Es decir. 5 celdas de 20 puntos cada una da 100.0f, establecer una altura de 100.0f hará que solo 5 filas sean visibles. Otra forma sería devolver más filas, pero las filas 6,7 y así serían algunas vistas con alfa 0, pero eso parece engorroso. ¿Has intentado devolver alguna vista clerColor como footerView?

0

Creo que puede intentar cambiar el marco de la vista de tabla, si desea ajustar con el número de celdas.

0

intentar algo como esto:

[table setFrame:CGRectMake(x, y, width, height*[list count])];

altura se refiere a la altura de la celda

2

Un método mucho más agradable que no requiere cambiar el tamaño de celda es para apagar el separador predeterminado (establecido el estilo a ninguno) y luego tiene una línea de separación en la celda misma.

+0

Entonces, ¿esto implicaría crear una celda personalizada en IB o tendría que agregar un separador a la célula mediante programación? –

+0

Podrías hacer cualquiera de los dos. Generalmente subclases UITableViewCell pero puedes agregar una subvista a la vista de contenido de una UITableViewCell normal. IB o el código es puramente por la forma en que prefiere trabajar ... –

0

Como dijo Nyx0uf, limitar el tamaño de la celda puede lograr esto. Por ejemplo:

- (CGFloat)tableView:(UITableView *)tabelView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    CGFloat result; 

    result = 100; 

    return result; 
} 
2

Estaba teniendo un problema similar, cómo mostrar solo separadores para las celdas que contienen datos.

lo que hice fue lo siguiente:

  1. separadores Inhabilitar para toda la tableView. Puede hacerlo en el inspector para la vista de tabla en el constructor Interfaz o llamando al [yourTableView setSeparatorStyle:UITableViewCellSeparatorStyleNone];.

  2. Dentro de su cellForRowAtIndexPath donde rellena su vista de tabla con celdas, cree un nuevo UIView y configúrelo como una subvista a la celda. Haga que el fondo de esta vista sea claro y ligeramente transparente. Se puede hacer que, con la siguiente:

    UIView *separatorView = [[UIView alloc] initWithFrame:CGRectMake: 
                 (0, cell.frame.size.height-1, 
                  cell.frame.size.width, 1)]; 
    [separatorView setBackgroundColor:[UIColor lightGrayColor]]; 
    [separatorView setAlpha:0.8f]; 
    [cell addSubView:separatorView]; 
    

    La anchura de este punto de vista es de 1 píxel que es el mismo que el separador predeterminado, se ejecuta la longitud de la celda, en la parte inferior.

Desde cellForRowAtIndexPath sólo se le llama con la frecuencia que haya especificado en numberOfRowsInSection sólo se crearon estos subvistas para las células que poseen los datos y debe tener un separador.

Espero que esto ayude.

+0

idea impresionante ... – stackOverFlew

1

¿Siempre tendrá 5 filas? Si se trata de una situación dinámica, debe establecer el número de filas de acuerdo con la fuente de datos de la tabla vista. Por ejemplo:

return [postListData count]; 

Esto devuelve el recuento de los registros en la matriz que contiene el contenido.

La tabla de visualización solo mostrará el número de filas y secciones que le indique. Si siempre va a tener solo una sección, NO implemente el método a continuación.

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 
    return 2; 
} 

Sin esto, la vista de tabla solo tendrá 1 sección. Con él, como se imaginaría, puede especificar el número de secciones.

1

Esto funcionó para mí - que tenía más filas vacías en la parte inferior de la pantalla en un iPhone 5 -

En mi caso necesitaba 9 filas

- (CGFloat)tableView:(UITableView *)tabelView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{   
    return self.tableView.frame.size.height/9; 
} 
0

poner en práctica estos dos métodos en su UITableViewController :

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section 
{ 
    if (section == tableView.numberOfSections - 1) { 
     return [[UIView alloc] initWithFrame:CGRectMake(0, 0, 1, 1)]; 
    } 
    return nil; 
} 


- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section 
{ 
    if (section == tableView.numberOfSections - 1) { 
     return 1; 
    } 
    return 0; 
} 

de hecho, estos códigos están diciendo tableview que no es necesario para hacer que la línea de separador para mí nunca más, para que se vea las celdas vacías no serán dis jugado (de hecho, la celda vacía no se puede seleccionar también)

14

Si desea mantener el separador, puede insertar una vista de pie de página ficticia. Esto limitará la tableview para mostrar sólo la cantidad de células que regresó en tableView: numberOfRowsInSection:

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

en Swift:

self.tableView.tableFooterView = UIView(frame: CGRectZero) 
+0

Agradable.Solo asegúrate de no tener un conjunto de altura fijo para esa vista de tabla o la vista de pie de página adicional puede empujar cosas más abajo debajo de la vista de tabla (aunque solo sea un maniquí). – marco

+2

En Swift 3: self.tableView.tableFooterView = UIView (frame: CGRect.zero) – KZD76

1

Es bastante simple. Simplemente configure el tamaño del popover de la siguiente manera: self.optionPickerPopOver.popoverContentSize = CGSizeMake (200, 200); Ciertamente puede ajustar el tamaño (200,200) dependiendo del tamaño del contenido y el número si filas.

Cuestiones relacionadas