101 votes

Comment savoir quelle UITableView défiler vers le bas dans l’iPhone

Je voudrais savoir quand un `` a fait défiler vers le bas pour charger et afficher plus de contenu, quelque chose comme délégué ou autre chose pour avertir le contrôleur lorsque la table a fait défiler vers le bas.

Quelqu'un sait-il ce, s’il vous plaît m’aider, Merci d’avance !

247voto

neoneye Points 11545

dans le délégué tableview, faites quelque chose comme ceci

62voto

Eyeball Points 1060

Modifié neoneyes réponse un peu.

Cette réponse cibles ceux d'entre vous qui ne veut que l'événement soit déclenché une fois par libération du doigt.

Adapté lors du chargement de plus de contenu de certains fournisseur de contenu (web service, données de base, etc). Notez que cette approche ne permet pas de respecter les temps de réponse de votre service web.

- (void)scrollViewDidEndDragging:(UIScrollView *)aScrollView
                  willDecelerate:(BOOL)decelerate
{
    CGPoint offset = aScrollView.contentOffset;
    CGRect bounds = aScrollView.bounds;
    CGSize size = aScrollView.contentSize;
    UIEdgeInsets inset = aScrollView.contentInset;
    float y = offset.y + bounds.size.height - inset.bottom;
    float h = size.height;

    float reload_distance = 50;
    if(y > h + reload_distance) {
        NSLog(@"load more rows");
    }
}

39voto

user1017099 Points 840

ajouter cette méthode dans l' UITableViewDelegate:

-(void)scrollViewDidScroll:(UIScrollView *)scrollView
{   
    CGFloat height = scrollView.frame.size.height;

    CGFloat contentYoffset = scrollView.contentOffset.y;

    CGFloat distanceFromBottom = scrollView.contentSize.height - contentYoffset;

    if(distanceFromBottom < height) 
    {
        NSLog(@"end of the table");
    }
}

19voto

Wolfgang Schreurs Points 7910

Utiliser – tableView:willDisplayCell:forRowAtIndexPath: (UITableViewDelegate méthode)

Il suffit de comparer l' indexPath avec les éléments de votre tableau de données (ou quelle que soit la source de données que vous utilisez pour votre vue de la table) pour déterminer si le dernier élément est affiché.

Docs: http://developer.apple.com/library/ios/documentation/uikit/reference/UITableViewDelegate_Protocol/Reference/Reference.html#//apple_ref/occ/intfm/UITableViewDelegate/tableView:willDisplayCell:forRowAtIndexPath:

19voto

Ajay Points 1013

Le meilleur moyen est de tester un point au bas de l'écran et d'utiliser l'appel de cette méthode lorsque l'utilisateur fait défiler (scrollViewDidScroll):

- (NSIndexPath *)indexPathForRowAtPoint:(CGPoint)point

Test d'un point situé près du bas de l'écran, puis à l'aide de la indexPath il retourne vérifier si cette indexPath est la dernière ligne si c'est cela, ajoutez les lignes.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X