Ich habe diesen Code, den ich zum Herunterladen von Bildern von einem Server verwende:
- (void) loadDataWithOperation {
//Verbindungstest
NSURL *url = [NSURL URLWithString:@"http://myurl.com/testconnection.php"];
NSError* error;
NSString* connected = [NSString stringWithContentsOfURL:url encoding:NSASCIIStringEncoding error:&error];
//Wenn der String Connected nicht in der Lage war, sich mit den Inhalten der URL zu initialisieren:
if (connected == NULL) {
//Fehlerbild anzeigen:
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Fehler!" message:@"Fehler beim Herunterladen der Galerie, bitte überprüfen Sie die Netzwerkverbindung und versuchen Sie es erneut." delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil];
[alert show];
[alert release];
[self createBackButton];
} else {
//Daten laden
NSLog(@"Verbunden - %@",connected);
NSLog(@"loadDataWithOperartion");
//Ein Array zum Speichern der URLs erstellen
NSMutableArray *myURLS;
//Das Array mit nil initialisieren
myURLS = [[NSMutableArray alloc] init];
NSLog(@"Hier1");
//Alle URLs vom Server dem Array hinzufügen
for (int i = 0; i <= 4; i++){
NSString *tempString = [[NSString alloc] initWithFormat : @"http://myurl.com/GalleryImages/%djack1.jpg", i];
[myURLS addObject: [NSURL URLWithString:tempString]];
[tempString release];
}
//Array zum Speichern der Bilddaten
NSMutableArray *myData;
//Das Array mit nil initialisieren
myData = [[NSMutableArray alloc] init];
NSLog(@"Hier2");
//Alle URLs vom Server dem Array hinzufügen
for (int i = 0; i <= 4; i++){
[myData addObject: [[NSData alloc] initWithContentsOfURL: [myURLS objectAtIndex:i]]];
}
//Array zum Speichern der Bilddaten
NSMutableArray *myImages;
//Das Array mit nil initialisieren
myImages = [[NSMutableArray alloc] init];
NSLog(@"Hier3");
//Alle URLs vom Server dem Array hinzufügen
for (int i = 0; i <= 4; i++){
[myImages addObject: [UIImage imageWithData: [myData objectAtIndex:i]]];
}
// Ein Array von Bildern in den Seitenansichtscontroller laden
// Initialisieren mit den oben gespeicherten Daten
NSArray *array = [[NSArray alloc] initWithArray:myImages];
[self setImages:array];
//Die Bilddaten freigeben
[myURLS release];
[myData release];
[myImages release];
[array release];
}
}
Dieser Code funktioniert, da auf dem Server immer eine bestimmte Anzahl von Bildern zum Herunterladen vorhanden ist, in diesem Fall 4.
Mein Problem ist jedoch, dass es bei einer Erhöhung der Anzahl von Bildern auf beispielsweise 20 zu einer sehr langen Wartezeit kommt, während die Bilder heruntergeladen und angezeigt werden.
Grundsätzlich möchte ich gerne zum Beispiel 5 Bilder mit dem Ladebildschirm herunterladen und dann die restlichen 15 herunterladen, während der Benutzer die ersten 5 Bilder anzeigen kann. Kann mir jemand Hinweise geben, wie ich das machen könnte?
Wenn die Bilder heruntergeladen werden, werden sie auf die Größe des iPhone-Bildschirms skaliert und in ein UIScrollView zur Ansicht platziert.
Danke,
Jack