J'utilise l'UIView TablefooTerview em> de dans mon uableview pour afficher une étiquette" de chargement plus "au bas de ma table. Lorsque l'UIView dans TABLEFOOTERVIEW EM> est affiché, j'ai besoin de démarrer un téléchargement paresseux de contenu. Comment savoir quand la tableFooTerview est affichée? P>
5 Réponses :
Parce que la table de table est, comme vous le dites, un UIView il gère le dessin dans Drawrect :. Si vous écrasez, vous pouvez obtenir un avis. P>
EDIT: Ancienne réponse était fausse. P>
Vous pouvez convertir le cadre du pied de page en coordonnées de la fenêtre et les comparer. Lorsque le pied de page est caché, il suppose qu'il possède des coordonnées d'origine Y> 480 (pour le mode portrait), lorsque le pied de page apparaît alors des coordonnées d'origine Y <480. Vous pouvez comparer la méthode Didscroll. P>
Merci, j'espère que cela vous aidera. P>
Voir la méthode Convertrect: toView: p>
Au lieu de déterminer lorsque la vue de la page de page vous indiquera pour que vous puissiez fort> vérifier quand la dernière ligne de la table est demandée em> et chargez les données. Le nombre de fois qu'un utilisateur fait défiler jusqu'à la dernière rangée sans faire défiler pour voir le pied de page les plus peu nombreux. L'effet sera le même, c'est-à-dire que vous savez lorsque l'utilisateur a défilé en bas et que vous devez charger davantage de données. P>
Ceci peut être facilement implémenté dans TableView: Cellfrowrowindexpath: code>. En gardant une trace de ce que IndexPath est le dernier et à la mise à jour à chaque fois que de nouvelles lignes sont ajoutées ou supprimées, vous pouvez simplement vérifier si le index de la cellule demandée est identique à l'index de la dernière ligne et déclenche la chargement paresseux de Plus de données de là, de la même manière que vous le faites actuellement. P>
Votez-vous parce que c'est comme ça que je l'ai mis en œuvre une fois - me semble la solution la plus propre.
C'est exactement ce que je fais actuellement maintenant. Je vais juste continuer à le faire comme ça.
Je fais aussi la même chose mais est-ce le meilleur moyen? 🙄
Si votre Si le contenu vertical décalé + la hauteur des limites de la table dépasse la hauteur de la taille du contenu de la table, nous pouvons supposer que le pied de page est maintenant en vue. P> Vous pouvez envelopper cela dans une instruction IF et l'utiliser pour envoyer une notification. Vous pouvez ensuite effectuer des tests supplémentaires pour que le pied de page s'étire de manière dynamique ou d'autres effets souhaités: p> Voici un petit extrait de code en action: P> TABLEFOOTERVIEW CODE> observe les modifications apportées à la propriété
contentoffset de la table CODE> (et peut-être aussi dans la propriété
de la table de la table code>), vous pouvez calculer Exactement quand il est défilé en vue avec les variables suivantes:
tableview.contentoffset.y code> - le montant vertical par lequel l'origine de la vue de contenu est décalée à partir de l'origine de la vue de défilement em> li> li>
tableview.ContSantsize.Height code> - la hauteur de la vue de contenu em> li>
tableview.bounds.Size.Height code> - la hauteur des limites de la table em> li>
ul>
// Set up an observer for changes in the table's contentOffset or contentSize.
// This can be done during initialisation of the tableFooterView
[tableView addObserver:self
forKeyPath:@"contentOffset"
options:NSKeyValueObservingOptionNew
context:NULL];
[tableView addObserver:self
forKeyPath:@"contentSize"
options:NSKeyValueObservingOptionNew
context:NULL];
// Further down in code, listen for the changes:
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object
change:(NSDictionary *)change context:(void *)context {
if ([keyPath isEqualToString:@"contentOffset"] ||
[keyPath isEqualToString:@"contentSize"]) {
if((tableView.contentOffset.y + tableView.bounds.size.height) > tableView.contentSize.height){
// the tableFooterView should now be in view
[[NSNotificationCenter defaultCenter]
postNotificationName:@"scrollToLoadNeedsLoad"
object:self];
// dynamically change the footer here (ideal for making it stretch with the table)
}
}
}
Overkill. Déclencher une charge paresseuse ou tout ce que vous voulez lorsque la dernière cellule de la vision est demandée est la voie à suivre.
réponse simple:
Ceci est appelé lorsque la vue Section i> Footer sera affichée; La question portait sur le Tablefooterview code>.