web-dev-qa-db-fra.com

UITableview reloaddata avec animation

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];
 }
65
Naveen Pathiyil

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.

105
Tim Windsor Brown

utiliser cette méthode,

[_tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationFade];
52
macpandit

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

43
Tom Howard

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];
21
Jai Govindani

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)
    }
}
16
Natanel

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.

5
arthankamal

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!

3
Jayprakash Dubey

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];        
});
3
Super Developers

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];
2
Mithun Ravindran