2011-12-29 33 views
5

En mi aplicación estoy usando UITableview. En ese método delegado didselectrow si hice cualquier operación no puede suceder solo.UITableview - tableView: didDeselectRowAtIndexPath: ¿el método no funciona correctamente?

Por ejemplo tengo a 3 filas en tableview

si selecciono 1 fila (indexPath.row == 0) no pasará nada

si seleccione de nuevo 2 fila (indexPath.row == 1) ahora está Iniciando sesión en la consola indexPath.row == 0, que es el valor anterior.

si de nuevo selecciona 1 fila y luego registra su valor anterior indexPath.row = 1.

¿Por qué esto va como.

- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 

     CustomerInfoViewController *customer = [[EquipmentViewController alloc]initWithNibName:@"CustomerInfoViewController" bundle:nil]; 

    EquipmentViewController *equpment = [[EquipmentViewController alloc]initWithNibName:@"EquipmentViewController" bundle:nil]; 

    ContactsViewController *contacts = [[ContactsViewController alloc]initWithNibName:@"ContactsViewController" bundle:nil]; 

    if(indexPath.row == 0) 
    { 

     NSLog(@"one %d",indexPath.row); 
     [detailsView addSubview:customer.view]; 
    } 

    if(indexPath.row == 1) 
    { 

     NSLog(@"two %d",indexPath.row); 
     [detailsView addSubview:equpment.view]; 
    } 

    if(indexPath.row == 2) 
    { 

     NSLog(@"three%d",indexPath.row); 
     [detailsView addSubview:contacts.view]; 
    } 
} 

Por favor, que alguien me ayude.

Gracias de antemano.

+1

¿Mostrar un código real? – Vladimir

+0

Parece ser lógicamente correcto. Tal vez saque las inicializaciones en las declaraciones if. ¿Podría tener algo que ver con las secciones? Tal vez haga 'NSLog (@"% d% d ", indexPath.row, indexPath.section);' para ver si la función no se llama o si su código es simplemente incorrecto. Debe aclarar algunas opciones para comprender mejor el problema. – DAS

Respuesta

19

ha implementado didDeselectRowAtIndexPath método, no didSelectRowAtIndexPath como se pretende

+3

omfg ¡Pasé demasiado tiempo con esto como mi problema! lol – canhazbits

+0

'didSelectRowAtIndexPath:' solía agregarse de forma predeterminada a la clase UITableViewController, pero ahora es reemplazado por 'prepareForSegue:', molesto. Esto también significa que mucha gente no nota el pequeño 'De' en el nombre del método y usa el método incorrecto. – runmad

1

implementación del método incorrecto como dijo Vladimir. use didSelectRowAtIndexPath

Cuestiones relacionadas