Aviad Ben Dov und rkbang bieten einige nützliche Tipps. Hinzufügen zu diesem:
Um auf eine Berührung auf Ihrer "Mehr anzeigen" Zelle reagieren, schreiben Sie eine tableView:willSelectRowAtIndexPath:
Methode (aus dem UITableViewDelegate
Protokoll) in welches Objekt ist der Delegat für Ihre UITableView
. Bei diesem Verfahren wird einen Anruf mehr Daten zu laden, und das Rück nil
so wird die Zeile nicht ausgewählt bleiben (was mehr knopfartige Verhalten ist):
- (NSIndexPath *)tableView:(UITableView *)tableView
willSelectRowAtIndexPath:(NSIndexPath *)indexPath {
[self loadMoreData];
return nil; // Don't leave this row selected.
}
in Ihrer Ladefunktion, einen Server Anruf zu erhalten die Daten, analysieren Sie es und laden Sie die Tabelle neu. Es ist auch höflich ein Besetztanzeige zu geben, während Sie für die Server-Antwort darauf warten:
#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];
}
}
In dieser letzten Funktion, ich bin parseIntoDataSource
das Verfahren unter der Annahme wird der Server die Antwort analysieren und diese Daten unabhängig von Ihrer Klasse hinzufügen verwendet, um die Daten für Tabellenzellen bereitzustellen, die durch die tableView:cellForRowAtIndexPath:
-Methode (des Protokolls UITableViewDataSource
) angegeben werden. Dieser Code verwendet auch HTTPHelper
aus the moriarty library.
Wenn Sie XML analysieren möchten, können Sie die SDK-eigene NSXMLParser
verwenden. The TouchXML library ist ebenfalls verfügbar und bietet eine etwas robustere Unterstützung für leicht verschmutzte Daten (wie in der realen Welt HTML, die normalerweise nicht den XML-Standards entspricht).Um JSON zu parsen, könnten Sie the json-framework verwenden, das eine sehr einfache kategoriebasierte Schnittstelle hat.
Gibt es einen guten Grund, tableView zu verwenden: willSelectRowAtIndexPath: vs tableView: didSelectRowAtIndexPath :? –