2011-03-10 19 views
9

Estoy tratando de cambiar la vista de un accesorio UITableViewCell cuando se selecciona su fila, tengo el siguiente código:Cambio UITableView accessoryView en la línea de selección de

- (void)tableView:(UITableView *)aTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ 
    UITableViewCell* cell = [self tableView:aTableView cellForRowAtIndexPath:indexPath]; 
    UIActivityIndicatorView *activityView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite]; 
    [activityView startAnimating]; 
    cell.accessoryView = activityView; 
    [activityView release]; 
} 

Pero esto no está funcionando. ¿Algunas ideas?

+0

y por cierto no lo hace usted se olvide no puede ver indicador de actividad blanco si fondo es blanco también ^) – Sergnsk

+0

que explica por qué traté de figura por qué se eliminó el indicador de actividad después de seleccionar otra celda. –

Respuesta

8

No debe solicitar la fuente de datos de la tabla (su auto) para una celda. porque esto creará una nueva celda que simplemente no se muestra.

reemplazar

UITableViewCell* cell = [self tableView:aTableView cellForRowAtIndexPath:indexPath]; 

con

UITableViewCell *cell = [aTableView cellForRowAtIndexPath:indexPath]; 
+0

Ahh bien. ¡Gracias! Perdón por la pregunta tonta. – Paludis

+4

@Paludis No hay preguntas tontas :-) Especialmente no esta. Creo que la diferencia entre los dos métodos no es tan obvia. Comparten el 70% del nombre pero hacen algo completamente diferente. –

5
UIImage *normalImage = [UIImage imageNamed:@"cell-accessory.png"]; 
    UIImage *selectedImage = [UIImage imageNamed:@"cell-accessory-selected.png"]; 

    UIButton *accessoryView = [UIButton buttonWithType:UIButtonTypeCustom]; 
    accessoryView.frame = CGRectMake(0.0f, 0.0f, normalImage.size.width, normalImage.size.height); 
    accessoryView.userInteractionEnabled = NO; 
    [accessoryView setImage:normalImage forState:UIControlStateNormal]; 
    [accessoryView setImage:selectedImage forState:UIControlStateHighlighted]; 
    cell.accessoryView = accessoryView; 
+0

No es una muy buena idea, seleccionar la celda sin haber tocado el botón no cambiaría nada – Daniel

Cuestiones relacionadas