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;