Rechargement données dans un UITableView lorsque vous appuyez sur une UITabBarItem
-
13-09-2019 - |
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];
}
}
}
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];
}