UITableView ne conserve pas la ligne sélectionnée lors du retour

j'ai plusieurs vues de table dans mon application. Je suis familier avec le comportement habituel des tables, que lorsque vous sélectionnez une ligne et de passer à une poussée de vue, il turnes bleu, puis quand vous revenez il reste en bleu pour une fraction de seconde, puis disparaît à blanc, afin d'informer l'utilisateur de ce ligne a été sélectionné.

Cela a parfaitement fonctionné jusqu'à récemment, lorsque j'ai remarqué qu'il n'est plus fait dans le dernier peu de ce que j'ai décrit: il n'est pas resté bleu pour une fraction de seconde...

Je n'ai aucune idée pourquoi, mais après avoir lu quelques posts sur ce site, je me suis rendu compte que le morceau de code qui est appelé est dans le "viewDidAppear" la méthode. Ce qui me confond, c'est que je n'ai pas surcharger cette méthode, mais je n'ai tester avec un NSLog pour me montrer le chemin d'index de la ligne qu'il doit désélectionner, qui est retourné (null).

Donc, c'est ce qui m'a croire qu'en quelque sorte, la tableView est prématurément en décochant la ligne.

Ci-dessous est mon didSelectRowForIndexPath méthode:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    NSLog(@"Selected row at index path: %@", indexPath);

    //setting our view controller as what we want
    TripDetails *detailViewController = [[TripDetails alloc] initWithNibName:@"TripDetails" bundle:nil];
    self.tripsDetailViewController = detailViewController;
    [detailViewController release];


 //Pass the selected object to the new view controller.
    NSLog(@"Passing trip...");
    self.tripsDetailViewController.selectedTrip =  [fetchedResultsController objectAtIndexPath:indexPath];

    //Hide the bottom bar on pushed view
    tripsDetailViewController.hidesBottomBarWhenPushed = YES;

   [self.navigationController pushViewController:tripsDetailViewController animated:YES];

}

Toute aide est grandement appréciée, merci 🙂


EDIT: Fixe

J'ai eu de travail.... Semble que j'avais de l'appel de la [self.tableView reloadData] méthode dans mon viewWillAppear méthode qui a ensuite provoqué la table pour désélectionner toutes les cellules. Ci-dessous mon modifiée de la méthode viewDidLoad. Merci pour les suggestions!

- (void)viewWillAppear:(BOOL)animated 
{
NSLog(@"running viewWIllAppear for TripsTable");

//Getting indexpath for highlighened cell, to rehighlight
NSIndexPath *selectedIndex = [self.tableView indexPathForSelectedRow];

//Refreshing Table - Implement an if statement on the condition that the data has     changed
[self viewDidLoad];
[self.tableView reloadData];

//Re select cell
[self.tableView selectRowAtIndexPath:selectedIndex animated:NO scrollPosition:UITableViewScrollPositionNone];


[super viewWillAppear:animated];
 }

source d'informationauteur Sonypop