2010-12-01 18 views
2

J'ai un UITableView. Sur le robinet d'un bouton, je veux afficher ma vue personnalisée, puis, une fois la vue est visible, supprimer un élément particulier de la tableview. La vue personnalisée masque la tableview, donc je voudrais que la suppression se produise après que cette nouvelle vue soit visible.Retarder reloadData sur UITableView

Actuellement, j'ai ceci, qui ajoute l'affichage personnalisé, puis supprime l'élément et recharge la table, mais le rechargement se produit juste au moment où l'animation se termine (j'ai un bloc d'animation, en changeant les vues alpha), donc je peux voir la mise à jour.

[self.view addSubview:customView]; 
[itemArray removeObject:object]; 
[self.tableView reloadData]; 

Comment puis-je retarder le rechargement jusqu'à ce que la vue soit visible?

Merci.

Répondre

1

Vous mentionnez que vous animez la vue vous-même; vous devez appeler reloadData lorsque l'animation complète en utilisant quelque chose comme:

[UIView setAnimationDelegate:self]; 
[UIView setAnimationDidStopSelector:@selector(methodThatCallsReloadData)]; 

// or even 
[UIView setAnimationDelegate:self.tableView]; 
[UIView setAnimationDidStopSelector:@selector(reloadData)]; 

ou si vous utilisez l'API à base de blocs:

[UIView animateWithDuration:... completion:^(BOOL finished) { 
    [self.tableView reloadData]; 
}]; 
+0

Merci Cela fonctionne très bien. Je préférerais l'API des blocs, mais depuis sa seule version 4.0+, mes utilisateurs 3.2 vont planter – joec

3

Essayez d'ajouter reloadData à viewDidAppear:

-(void) viewDidAppear:(BOOL)animated { 
    [super viewDidAppear:animated]; 
    [self.tableView reloadData]; 
} 

Cela devrait vous donner le délai requis.

1

ou vous pouvez utiliser la méthode performSelector:

[self performSelector:@selector(myOtherMethod) withObject:nil afterDelay:1.5];