Mein Code lädt Bilder asynchron herunter, indem er InternetImage im tableView:cellForRowAtIndexPath:
Methode verwendet. Dabei initialisiert er ein IntentImage mit initWithURL und ruft downloadImage auf. Dieser Code funktioniert einwandfrei, nachdem man zu einer neuen Zelle UITableViewCell in der UITableView gescrollt ist, aber davor nicht, obwohl die URL in beiden Fällen korrekt ist. Keine der NSURLConnection-Delegate-Methoden von InternetImage wird aufgerufen, um mich über Erfolg oder Misserfolg der Verbindung zu informieren, wie es eigentlich sollte. Das Aufrufen von reloadData:
, setNeedsDisplay:
und setNeedsLayout:
bewirkt nichts, da das Bild nicht heruntergeladen wird.
Hier ist der Code aus meiner Unterklasse von UITableViewController:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
Object *object = (Object *)[self.array objectAtIndex:indexPath.row];
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"cell"] autorelease];
}
cell.textLabel.text = object.attribute;
if (object.image == nil && object != nil) {
NSString *URLString = [[MyAppDelegate imageURLFromLink:(object.link) withExtension:@".jpg"]absoluteString];
InternetImage *asynchImage = [[InternetImage alloc] initWithUrl:URLString object:object];
[asynchImage downloadImage:self];
}
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
if (object.image != nil && object.thumbnailImage == nil) {
UIImage *image= (UIImage *) object.image;
UIImage *thumbnail = [image _imageScaledToSize:CGSizeMake(75.0, 50.0) interpolationQuality:20];
object.thumbnailImage = thumbnail;
}
cell.imageView.image = object.thumbnailImage;
return cell;
}