Question

Y at-il un moyen de savoir quand l'index sur uitableview est réellement utilisé? Je ne trouve aucune méthode dans la documentation d'Apple, mais je me demandais si quelqu'un sait quelque chose. Je essentiellement que de faire une animation à mon avis de la table qui change en fonction de ce que l'article est sélectionné dans l'index, et je ne sais pas comment faire sans accès à l'index de vue de tableau.

Toute aide est grandement appréciée.

Merci.

Était-ce utile?

La solution

  1. La méthode de délégué UITableViewDataSource -tableView:sectionForSectionIndexTitle:atIndex: renvoie un NSInteger représentant la section sélectionnée à partir de l'index de section. Remplacer cette méthode, dans la catégorie est votre délégué de source de données (probablement votre contrôleur de vue de la table).

  2. Mise en place d'une propriété dans le contrôleur de vue, un NSInteger appelé selectedSectionIndex. Sa valeur est fixée à l'intérieur de la méthode déléguée précitée.

  3. Enfin, mettre en place un observateur dans le contrôleur de vue, qui attend des changements à cette propriété et déclenche votre code désiré lorsqu'un changement ne soit observé.

Dans la méthode -viewWillAppear:, par exemple:

[self addObserver:self forKeyPath:@"selectedSectionIndex" options:NSKeyValueObservingOptionNew context:nil];

Dans la méthode -viewWillDisappear:, désinscription l'observateur:

[self removeObserver:self forKeyPath:@"selectedSectionIndex"];

Il est important de faire de sorte que la méthode -dealloc ne jette pas une exception.

Enfin, mettre en place la méthode d'observation de faire quelque chose quand il y a un changement à selectedSectionIndex:

- (void) observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
    if ([keyPath isEqual:@"selectedSectionIndex"]) { 
        // The section index changed, so trigger some cool animation
    }
}

Le modèle d'observation de valeur-clé est une bonne façon générale à quelque chose de déclencheur lorsque la valeur d'un objet change quelque part. Apple a écrit un bon "démarrage rapide" document qui introduit ce sujet.

Autres conseils

Pas une solution très élégante, mais vous pourrez peut-être sous-classe UITableView et surveiller en - (void)didAddSubview:(UIView *)subview; lors de son premier montre. Cela suppose qu'il est ajouté directement à la UITableView et non l'un de ses sous-vues ou superview, et que vous pouvez reconnaître la vue ajoutée que l'indice. Il est également possible qu'après la première fois, il est ajouté, il sera caché et montré au lieu d'être enlevé et ajouté à nouveau.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top