iPhone + UITableView + celda de acceso de una fila particular
-
05-07-2019 - |
Pregunta
Estoy usando el siguiente método en mi aplicación:
- (UITableViewCell *)tableView:(UITableView *)tblView cellForRowAtIndexPath:(NSIndexPath *)indexPath
En este método, utilizando indexPath.row
puedo obtener el número de fila de cada fila.
Pero quiero acceder a la celda en esa fila y hacer algún formato solo en esa celda.
Por favor guíame.
Solución
Tal vez hay un malentendido. Se supone que el método que está citando le dice a tableView qué fila mostrar en esa indexPath. Por lo tanto, siempre que tableView solicite este método, lo hace porque todavía no hay una fila en esta indexPath.
El código de la plantilla generará una nueva celda o una dequeue:
- (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] autorelease];
}
Luego puede acceder a cell
para configurar el contenido de cada celda o agregar contenido a la vista de contenido.
Si manipula el formato de una celda por fila (por ejemplo, el color del cell.textLabel), debe hacer esto en el siguiente método de delegado:
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
Otros consejos
Mientras que las otras respuestas funcionarán bien, pero solo cambiará la celda que el usuario pulsó. En mi caso, yo también quería cambiar las otras células. Después de buscar alrededor, lo intenté:
[[tableView cellForRowAtIndexPath:5 setAccessoryType:UITableViewCellAccessoryNone];
Esto NO funciona, porque IndexPath no es un número entero. (indexpath.row es, sin embargo). Entonces, al buscar el documento, descubrí que podemos usar NSIndexPath para codificar una fila en Valor NSIndexPath. Aquí está el código de trabajo:
[[tableView cellForRowAtIndexPath: [NSIndexPath indexPathForRow:5 inSection:0]] setAccessoryType:UITableViewCellAccessoryNone];
De esta manera, puede acceder a la celda EN CUALQUIER LUGAR, EN CUALQUIER FILA / SECCIÓN, siempre que tenga el objeto de vista de tabla.
Espero que esto ayude a alguien.
Puede acceder a una celda visible utilizando el método UITableView -cellForRowAtIndexPath
. De la UITableView referencia:
- (UITableViewCell *)cellForRowAtIndexPath:(NSIndexPath *)indexPath
Sin embargo,Valor de retorno
Un objeto que representa un celda de la tabla o nula si la celda no es visible o indexPath está fuera de rango.
(IMO) cellForRowAtIndexPath
es el mejor lugar para la configuración de una celda.