Ajoutez à cela:
Pour répondre à une touche de votre cellule "View More", écrivez une méthode tableView:willSelectRowAtIndexPath:
(à partir du protocole UITableViewDelegate
) dans l'objet qui est le délégué pour votre UITableView
. Dans cette méthode, faire un appel pour charger plus de données, et le retour nil
de sorte que la ligne ne reste pas sélectionnée (ce qui est plus de type bouton comportement):
- (NSIndexPath *)tableView:(UITableView *)tableView
willSelectRowAtIndexPath:(NSIndexPath *)indexPath {
[self loadMoreData];
return nil; // Don't leave this row selected.
}
Dans votre fonction de charge, faire un appel de serveur pour obtenir les données, l'analyser et recharger la table. Il est aussi poli de donner un indicateur occupé pendant que vous attendez la réponse du serveur:
#import "HTTPHelper.h"
// ... later ...
- (void) loadMoreData {
[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES];
NSString* dataStr = nil;
NSError* error = [[HTTPHelper sharedInstance]
synchronousGetURLAsString:@"http://server.com/mystuff"
replyData:&dataStr];
[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO];
if (error) {
[self displayErrorMessage:error];
} else {
[self parseIntoDataSource:dataStr];
[tableView reloadData];
}
}
Dans cette dernière fonction, je suppose que la méthode parseIntoDataSource
analysera la réponse du serveur et ajouter que les données à tout ce que votre classe utilise pour fournir les données pour les cellules de table qui sont données par la méthode tableView:cellForRowAtIndexPath:
(du protocole UITableViewDataSource
). Ce code utilise également HTTPHelper
de the moriarty library.
Si vous souhaitez analyser XML, vous pouvez utiliser le NSXMLParser
du SDK. The TouchXML library est également disponible, et offre un support un peu plus robuste pour les données légèrement sales (comme le monde réel html, qui n'est généralement pas conforme aux normes XML).Pour analyser JSON, vous pouvez utiliser the json-framework, qui a une interface basée sur une catégorie très simple.
Existe-t-il une bonne raison d'utiliser tableView: willSelectRowAtIndexPath: vs tableView: didSelectRowAtIndexPath :? –