uitableviewdatasource uitableviewcontroller uitableviewcell example uitableview

uitableviewcell - uitableviewcontroller swift 4



Cómo encontrar el número de celdas en UITableView (7)

Necesito recorrer todas las celdas en un TableView y configurar una imagen para cell.imageView cuando cell.imageView un botón. Estoy tratando de conseguir cada celda por

[[self tableView] cellForRowAtIndexPath:[NSIndexPath indexPathForRow:i inSection:0]];

Pero necesito el recuento de células.

¿Cómo encontrar el recuento de celdas en TableView?


Extensión para UITableView para obtener el número total de filas. Escrito en Swift 4

extension UITableView { var rowsCount: Int { let sections = self.numberOfSections var rows = 0 for i in 0...sections - 1 { rows += self.numberOfRows(inSection: i) } return rows } }


basado en el código de Biranchi, aquí hay un pequeño fragmento de código que recupera cada celda completa. Espero que esto le pueda ayudar !

UITableView *tableview = self.tView; //set your tableview here int sectionCount = [tableview numberOfSections]; for(int sectionI=0; sectionI < sectionCount; sectionI++) { int rowCount = [tableview numberOfRowsInSection:sectionI]; NSLog(@"sectionCount:%i rowCount:%i", sectionCount, rowCount); for (int rowsI=0; rowsI < rowCount; rowsI++) { UITableViewCell *cell = (UITableViewCell *)[tableview cellForRowAtIndexPath:[NSIndexPath indexPathForRow:rowsI inSection:sectionI]]; NSLog(@"%@", cell); } }


el recuento total de todas las celdas (en una sección) debe ser lo que sea devuelto por

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

Sin embargo, este método es cada vez más importante, también puede hacerlo en sus propios métodos. Probablemente algo como return [myArrayofItems count];


UITableView está diseñado solo como una forma de ver sus datos, tomada de la fuente de datos. El número total de celdas es una información que pertenece a la fuente de datos y debe acceder a ella desde allí. UITableView tiene suficientes celdas para ajustarse a la pantalla a la que puede acceder usando

- (NSArray *)visibleCells

Una solución sucia sería mantener una matriz separada de cada UITableViewCell que cree. Funciona, y si tienes un número bajo de celdas no es tan malo.

Sin embargo, esta no es una solución muy elegante y, personalmente, no la elegiría a menos que no haya absolutamente ninguna otra forma. Es mejor que no modifique las celdas reales en la tabla sin un cambio correspondiente en la fuente de datos.


Swift 3 ejemplo equivalente

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { if section == 0 { return 1 }else if section == 1 { return timesArray.count // This returns the cells equivalent to the number of items in the array. } return 0 }


Swift 3.1 (A partir del 13 de julio de 2017)

let sections: Int = tableView.numberOfSections var rows: Int = 0 for i in 0..<sections { rows += tableView.numberOfRows(inSection: i) }


int sections = [tableView numberOfSections]; int rows = 0; for(int i=0; i < sections; i++) { rows += [tableView numberOfRowsInSection:i]; }

Número total de filas = filas;