Iam ayant un UItableview qui est rempli à partir de tableau et une liste déroulante. Si je sélectionne une ligne de la liste déroulante, le tableau sera inséré avec de nouvelles valeurs et la vue de table devrait recharger. Comment animer la table avec le nouveau contenu de tableau? Merci d'avance
animation comme je veux montrer la ligne un par un. j'ai essayé cette méthode
- (void)reloadRowsAtIndexPaths:(NSArray )indexPaths withRowAnimation:(UITableViewRowAnimation)animation {
NSIndexPath rowToReload = [NSIndexPath indexPathForRow:[names count] inSection:0];
NSArray* rowsToReload = [NSArray arrayWithObjects:rowToReload, nil];
[tableDetails reloadRowsAtIndexPaths:rowsToReload withRowAnimation:UITableViewRowAnimationNone];
}
Pour ajouter à la réponse correcte, si vous souhaitez recharger toutes sections de votre UITableView
, vous devrez procéder comme suit:
ObjC
NSRange range = NSMakeRange(0, [self numberOfSectionsInTableView:self.tableView]);
NSIndexSet *sections = [NSIndexSet indexSetWithIndexesInRange:range];
[self.tableView reloadSections:sections withRowAnimation:UITableViewRowAnimationAutomatic];
rapide
let range = NSMakeRange(0, self.tableView.numberOfSections)
let sections = NSIndexSet(indexesIn: range)
self.tableView.reloadSections(sections as IndexSet, with: .automatic)
Cela rechargera tout dans la vue table avec une animation. Comme un pro.
utiliser cette méthode,
[_tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationFade];
Swift
UIView.transition(with: myTableView, duration: 1.0, options: .transitionCrossDissolve, animations: {self.myTableView.reloadData()}, completion: nil)
Swift 2
UIView.transitionWithView(myTableView, duration: 1.0, options: .TransitionCrossDissolve, animations: {self.myTableView.reloadData()}, completion: nil)
Je suis allé avec cela dans Swift
Vous dites d’abord à la tableView d’attendre des mises à jour avec beginUpdates
. Puis mettez à jour les sections pertinentes (si votre tableView n'a qu'une seule section, il suffit de passer à zéro pour le numéro de la section). Voici où vous spécifiez l’animation - vous pouvez jouer avec elle pour obtenir l’effet souhaité. Après cela, vous appelez endUpdates
sur la tableView. Le typedef pour UITableViewRowAnimation spécifie:
typedef enum {
UITableViewRowAnimationFade,
UITableViewRowAnimationRight,
UITableViewRowAnimationLeft,
UITableViewRowAnimationTop,
UITableViewRowAnimationBottom,
UITableViewRowAnimationNone,
UITableViewRowAnimationMiddle,
UITableViewRowAnimationAutomatic = 100
} UITableViewRowAnimation;
Jouez pour voir lequel vous voulez. Même sélectionner UITableViewRowAnimationNone
peut parfois avoir un bel effet. Code de mise à jour de la table ci-dessous:
[self.tableView beginUpdates];
[self.tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationNone];
[self.tableView endUpdates];
Dans Swift 3, vous pouvez simplement ajouter le extension
suivant à UITableView
:
extension UITableView {
func reloadData(with animation: UITableView.RowAnimation) {
reloadSections(IndexSet(integersIn: 0..<numberOfSections), with: animation)
}
}
vous pouvez utiliser reloadSections:withRowAnimation:
les fonctions. Check Référence de la classe UITableView .
Vérifiez ceci reloadData with Animation qui a déjà répondu à votre question.
La méthode ci-dessous est supportée par tableView pour l'animation:
- (void)reloadSections:(NSIndexSet *)sections withRowAnimation:(UITableViewRowAnimation)animation NS_AVAILABLE_IOS(3_0);
Utilisation:
//Reload tableView with animation
[self.tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationRight];
Les différents types d’animation disponibles sont:
typedef NS_ENUM(NSInteger, UITableViewRowAnimation) {
UITableViewRowAnimationFade,
UITableViewRowAnimationRight, // slide in from right (or out to right)
UITableViewRowAnimationLeft,
UITableViewRowAnimationTop,
UITableViewRowAnimationBottom,
UITableViewRowAnimationNone, // available in iOS 3.0
UITableViewRowAnimationMiddle, // available in iOS 3.2. attempts to keep cell centered in the space it will/did occupy
UITableViewRowAnimationAutomatic = 100 // available in iOS 5.0. chooses an appropriate animation style for you };
J'espère que cela pourrait aider!
J'ai essayé ceci et mon Table
est Animated
avec une animation fluide
// Mettez ce code où vous voulez recharger votre vue tableau
dispatch_async(dispatch_get_main_queue(), ^{
[UIView transitionWithView:<"TableName">
duration:0.1f
options:UIViewAnimationOptionTransitionFlipFromRight
animations:^(void) {
[<"TableName"> reloadData];
} completion:NULL];
});
Essayez d’animer pendant la transition. Changement d’une vue pendant le rechargement de UITableView.
[UIView transitionWithView:_yourTableView
duration:0.40f
options:UIViewAnimationOptionTransitionCrossDissolve
animations:^(void) {[_yourTableView reloadData];}
completion:nil];