Question

J'ai UITabBarController dans le cadre de mon délégué app et je veux piège lorsque l'utilisateur touche un onglet spécifique (les favoris) et la force de la table à l'intérieur pour recharger les données.

Quelle serait la meilleure pratique dans ce cas?

J'ai ajouté le protocole UITabBarDelegate à mon délégué de l'application et mis en œuvre la méthode didSelectViewController. Jusqu'ici tout va bien. Au sein de la méthode que je reçois un viewController, donc je peux vérifier son titre, etc. pour déterminer l'onglet sélectionné.

Comment puis-je envoyer alors un message reloadData au UITableView dans le viewController? J'ai essayé de créer une méthode dans ma classe de FavouritesViewController et d'appeler cela, mais cela ne fonctionne pas.

Exemple de code:

#pragma mark UITabBarController delegate methods

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
{
   // If the favourites tab is pressed then reload the data
   if (viewController.title = @"Favourites")
   {
      if ([viewController respondsToSelector:@selector(reloadFavourites:)]) 
      {
         [viewController reloadFavourites];
      }
   }
} 
Était-ce utile?

La solution

On dirait que vous devez ajouter un [UITableView reloadData] à la méthode viewWillDisplay du tableViewController. Cela entraînera la table pour recharger chaque fois qu'il est affiché.

Si vous voulez forcer un rechargement sera le tableview est déjà affichée, puis appeler reload de la méthode que vous avez créé dans l'OP devrait fonctionner.

Autres conseils

La pièce de code suivante doit actualiser votre table à chaque fois la vue apparaît.

-(void)viewWillAppear:(BOOL)animated
{
    [[self tableView] reloadData];
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top