2017-10-19 16 views
0

J'ai un UITableViewController qui implémente UIRefreshControl pour actualiser les données du serveur, des débogages je peux voir que la méthode d'actualisation est appelée et les nouvelles données correctes sont téléchargées mais mon UITableViewController ne reflète pas cela.Pourquoi mon UITableViewController ne s'actualise pas lorsque j'utilise UIRefreshControl?

si je ferme la UITableViewController et l'ouvrir à nouveau les données correctes est montré

mon code de rafraîchissement ressemble à ce

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    UIRefreshControl *refresh = [[UIRefreshControl alloc] init]; 

    refresh.attributedTitle = [[NSAttributedString alloc] initWithString:@"Pull to Refresh"]; 

    [refresh addTarget:self action:@selector(updateData) 

    forControlEvents:UIControlEventValueChanged]; 

    self.refreshControl = refresh; 
} 

- (void) updateData { 

    [ShopifyWebServices fetchAllProductsInCollection:shopifyCollectionTitle]; 

    [self performSelector:@selector(stopRefresh) withObject:nil afterDelay:5]; 
} 

- (void)stopRefresh { 

    [self.refreshControl endRefreshing]; 

} 
+0

pour gérer les données de tableview, vous devez utiliser la fonction reloadData de vue de la table –

Répondre

2

Vous êtes responsable de recharger votre point de vue de la table une fois que vous avez les nouvelles données. Le contrôle d'actualisation ne fait rien d'autre que de vous dire qu'il a été déclenché.

Je m'attendrais à une sorte de méthode déléguée ou à un bloc d'achèvement après fetchAllProductsInCollection, et c'est là que vous devriez appeler endRefreshing et recharger vos données de table.

+0

J'ai essayé, mais elle ne sera pas rafraîchir à moins que je sors et en arrière dans - (void) updateData { [ShopifyWebServices fetchAllProductsInCollection: shopifyCollectionTitle]; [self performSelector: @selector (stopRefresh) avecObjet: nil afterDelay: 5]; [self.tableView reloadData]; } –

+0

Est-il possible que j'ai manqué de connecter une source de données ou quelque chose? –

+0

Ce code rechargera immédiatement les données. Si vous mettez '[self.tableView reloadData];' dans votre méthode 'stopRefresh' cela peut fonctionner, mais vous attendez toujours 5 secondes au lieu de le faire quand la récupération est terminée. Si vous n'aviez pas connecté la source de données, cela ne marcherait jamais. – jrturton