У меня проблема с табличным представлением и некоторыми пользовательскими ячейками. Вот мой код:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
NSLog(@"cellForRowAtIndexPath");
static NSString *MyIdentifier = @"customCell";
EventTableCell *cell = (EventTableCell *)[tableView dequeueReusableCellWithIdentifier:MyIdentifier];
if (cell == nil) {
//cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:MyIdentifier] autorelease];
[[NSBundle mainBundle] loadNibNamed:@"EventTableCell" owner:self options:nil];
cell = self.eventCell;
}
//Set up the cell
int storyIndex = [indexPath indexAtPosition: [indexPath length] - 1];
[[cell eventNameLabel] setText:[[stories objectAtIndex: storyIndex] objectForKey: @"title"]];
[[cell eventDateLabel] setText:[[stories objectAtIndex: storyIndex] objectForKey: @"date"]];
NSString * storyLink = [[stories objectAtIndex: storyIndex] objectForKey: @"link"];
// clean up the link - get rid of spaces, returns, and tabs...
storyLink = [storyLink stringByReplacingOccurrencesOfString:@" " withString:@""];
storyLink = [storyLink stringByReplacingOccurrencesOfString:@"\n" withString:@""];
storyLink = [storyLink stringByReplacingOccurrencesOfString:@" " withString:@""];
//NSString *string = [[NSString alloc] stringWithString:[[stories objectAtIndex: storyIndex] objectForKey: @"link"]];
NSURL *url = [NSURL URLWithString:storyLink];
NSData *data = [[NSData alloc] initWithContentsOfURL: url];
UIImage *image = [UIImage imageWithData: data];
[[cell eventImage] setImage:image];
return cell;
}
В моей таблице много этих пользовательских ячеек, больше, чем может показать представление одновременно. Поэтому мне нужно прокрутить вверх / вниз, чтобы увидеть все ячейки. Моя проблема в том, что когда я прокручиваю, он сильно отстает, и в консоли отладчика он вызывает cellForRowAtIndexPath, когда каждая новая ячейка попадает в представление. Каждая ячейка содержит изображение, которое загружается с URL-адреса и, следовательно, должно быть преобразовано в UIImage. Я полагаю, что это вызывает отставание.
Кто-нибудь может подсказать мне, что мне нужно сделать, чтобы загрузить изображения и отобразить их в ячейках, не вызывая значительного отставания в приложении?
IE: куда бы я поместил код загрузки / конвертации, чтобы изображение уже сохранялось как изображение, прежде чем ячейка будет отображена?
Спасибо
Jack