cómo ocultar filas vacías en un UITableView y cambiar la altura de Uitableview en function de filas no vacías

Tengo un par de problemas con mi UITableView .

  1. Cuando agrego una UITableview en mi página, de forma pnetworkingeterminada, trae un número fijo de filas, aunque establecí el número de filas en la sección como 1 . Todas las filas aparecen excepto la primera fila, y todas son filas vacías. Por lo tanto, quiero ocultar todas las filas vacías en UItableview .

  2. Basado en las filas no vacías, quiero cambiar la altura de mi UItableView .

¿Estás seguro de que estás usando el estilo UITableViewStyleGrouped ?

Porque de forma pnetworkingeterminada, se establece en UITableViewStylePlain que muestra también celdas vacías después de mostrar celdas llenas.

NUEVA RESPUESTA

En Swift 2.2, 3.0 y en adelante, haga lo siguiente:

tableView.tableFooterView = UIView()

ANTERIOR RESPUESTA A CONTINUACIÓN. GUARDADO POR LA POSTERIEDAD.

Si debe usar UITableViewStylePlain , y no usa footerView para nada más, puede usar la siguiente solución semi-sucia si tiene ARC habilitado .

 - (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section { UIView *view = [[UIView alloc] init]; return view; } 

Si tiene ARC deshabilitado , use lo siguiente:

 - (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section { UIView *view = [[[UIView alloc] init] autorelease]; return view; } 

Esto crea un FooterView invisible, que aparece inmediatamente después de la última celda llena de datos.

 - (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section { return 0.01f; } 

y para iOS 7

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

Solucioné el problema creando una UIView simple como vista del pie de página con el mismo color de background que el background de la tabla:

 (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section { UIView *view = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 100)] autorelease]; view.backgroundColor = [UIColor whiteColor]; return view; } 

Tal vez tenga que deshabilitar el desplazamiento en la vista de la tabla, además.

Si su vista de tabla tiene varias secciones, puede intentar usar esto:

 - (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section { if (section == tableView.numberOfSections - 1) { return [UIView new]; } return nil; } - (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section { if (section == tableView.numberOfSections - 1) { return 1; } return 0; } 
 - (void) viewDidLoad { [super viewDidLoad]; self.tableView.tableFooterView = [[[UIView alloc] init] autorelease]; } 

Esto también se puede hacer a través de Interface Builder. Simplemente agregue una UIView de 1 píxel de altura como pie de página a UITableView. Es esencialmente lo mismo que la mayoría de las respuestas aquí, pero mantiene algunos detalles específicos de la interfaz de usuario en la vista en lugar de en el controller de vista.

introduzca la descripción de la imagen aquí

 [self.SomeTableView setSeparatorStyle:UITableViewCellSeparatorStyleNone]; 

Use esto para deshacerse de las líneas si UITableView está vacío.

en el método que devuelve el número de filas, especifique el count usted mismo dinámicamente. Por ejemplo, si va a poblar la tabla con decir un NSArray denominado arrayForRows:

 return [arrayForRows count]; // inside the method which returns the number of rows. 

Lo anterior es un ejemplo simple que llena una tabla con una matriz como fuente de datos. No hay filas vacías. Solo se muestran muchas filas en la tabla de acuerdo con el count de elementos en la matriz que llena la tabla.

Creo que te refieres a la altura de la fila en la table. Puede jugar con la altura de las filas utilizando el método:

 (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 

lea http://developer.apple.com/library/ios/#documentation/uikit/reference/UITableViewDelegate_Protocol/Reference/Reference.html#//apple_ref/occ/intfm/UITableViewDelegate/tableView:heightForRowAtIndexPath :

EDITAR: ah ahora obtengo lo que intentas lograr. Está tratando de evitar mostrar las filas vacías separadas con esas líneas de separación ¿verdad? Vea esta publicación:

Cómo mostrar una tabla con filas de cero en UITableView

Un poco escondido en la respuesta de Bourne; si desea ocultar las filas vacías en el background en una vista de tabla sin formatting con varias secciones, use esta respuesta:

https://stackoverflow.com/a/5658100/580173