2010-11-03 6 views
2

J'ai donc une question de design pour vous. Fondamentalement, j'ai une application dans laquelle je récupère 20 éléments d'un serveur lorsque l'application se charge, et les affiche dans une vue de la table. J'ai aussi une cellule de table de chargement qui apparaît dans la dernière cellule. Ce que je veux faire est quand cette cellule apparaît, charger les 20 éléments suivants et les ajouter à la liste et recharger la table.iPhone charger plus tableViewCell

Quelles recommandations avez-vous pour faire quelque chose comme ça? Dois-je déclencher automatiquement la demande lorsque la cellule apparaît? Ou devrais-je attendre quelque chose d'autre pour le faire? Toute contribution serait appréciée. Merci!

Répondre

3

Personnellement, je déclencherais la requête dès que la cellule apparaîtrait. En fait, j'envisagerais d'envoyer la requête avant que la cellule n'apparaisse - autour de la cellule 15 ou plus? De cette façon, l'utilisateur attend moins de temps avec une cellule de chargement affichée. Cependant, tout dépend de la taille de votre jeu de données - si vous avez beaucoup de données pour obtenir les 20 prochaines lignes, je mettrais quelque chose comme 'appuyez ici pour plus de résultats' et attendez que l'entrée de l'utilisateur se déclenche la demande. Le meilleur moyen de savoir quelle est la meilleure expérience utilisateur consiste à effectuer un test utilisateur rapide - demandez à des personnes qui pourraient être vos clients de tester l'application et de voir avec quelle expérience elles semblent les plus heureuses. Et jetez un oeil à des applications comme la vôtre - que font-ils - si elles ont créé un précédent avec vos clients, peut-être que vous devriez essayer de suivre cela?

+0

Je pense que c'est ce que je vais finir par faire. Il semble que ce sera très transparent de cette façon. Question cependant, comment puis-je faire de la table enregistrer sa position de défilement alors quand il recharge il ne retourne pas au sommet? – gabaum10

+0

Je ne pensais pas qu'il a défilé vers le haut sur une recharge? – deanWombourne

+0

C'est le cas, mais j'ai trouvé comment sauvegarder l'index et faire défiler jusqu'à cette position sans animer. Merci pour l'aide, cela fonctionne! :) – gabaum10

2

Vous pouvez utiliser le code de test suivant;

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ 
    totalElements = pageNumber*kNumberofElementsPerPage; 
    int noOfrows = totalElements>[customerArray count]?[customerArray count]:totalElements+1; 
    return noOfrows; 
} 

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ 
    if(indexPath.row == totalElements&&totalElements!=0){ 
     UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"loadMoreCell"]; 
     if(cell == nil){ 
      cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"loadMoreCell"]; 
     } 
     cell.textLabel.text = @"Load More records"; 
     cell.detailTextLabel.text = [NSString stringWithFormat:@"Showing %d of %d records",totalElements,[customerArray count]]; 
     return cell; 
    } 
    ...... 
    ...... 
} 
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    if(indexPath.row == totalElements){ 
     pageNumber++; 
     [customerTableView reloadData]; 
     return; 
    } 
    ...... 
    ...... 
} 

J'espère que cela va vous aider.

+0

Merci pour la réponse, mais je pense que je vais le charger dynamiquement lorsque l'utilisateur fait défiler, donc il n'a pas besoin d'appuyer sur quoi que ce soit. :) – gabaum10

+0

Par exemple: Tout d'abord, il affichera 10 lignes dans une vue de table. La dernière rangée est "Charger plus d'enregistrements", si vous cliquez dessus, alors il y aura 10 lignes de plus. Dynamiquement, ça va arriver – jfalexvijay

+0

Eh bien oui, je l'ai fonctionné donc il se déclenchera si l'utilisateur entre dans les 5 rangées du bas. Cela fonctionnerait probablement aussi ... – gabaum10

Questions connexes