Проблема перезагрузки TableView - PullRequest
0 голосов
/ 09 сентября 2011

Каждая ячейка моего TableView содержит UIImage, я сделал действие, чтобы изменить все изображения в UIImage в каждой ячейке, а затем перезагрузить таблицу.
Изображения не менялись, пока я не прокручиваю таблицу.
Я знаю, что TableView загружает ячейку во время прокрутки.
Но есть ли способ исправить мою проблему?

Спасибо

Ответы [ 2 ]

1 голос
/ 09 сентября 2011

Убедитесь, что вы звоните reloadData или beingUpdates / endUpdates из MainThread.Вы можете проверить это с помощью:

if (![NSThread mainThread]) {
    return;
}

Вот пример.ViewController является делегатом ImageDownloader, и когда загрузка изображения завершена, он называется -acceptImage, который затем выполняет селектор в основном потоке для обновления таблицы.Также см. UITableView Справочник

- (void)setDownloadedImage:(NSMutableDictionary *)d {
    UIImageView *imgV = (UIImageView *)[d objectForKey:@"imageView"];
    NSIndexPath *indexPath = [d objectForKey:@"userInfo"];
    [thumbs addObject:[ImageWorks imageWithImage:[UIImage imageWithData:[d objectForKey:@"image"]] scaledToSize:imgV.frame.size]];
    [table beginUpdates];
    [table insertRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationMiddle];
    [table endUpdates];
    loadingView.hidden = YES;
}

- (void)acceptImage:(NSData *)image ForUserInfo:(id)userInfo ForUrl:(NSString *)url {
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    NSMutableDictionary *d = [[NSMutableDictionary alloc] init];
    iPhoneMyTableCell *cell = [[[NSBundle mainBundle] loadNibNamed:@"iPhoneMyTableCell" owner:self options:nil] lastObject];
    [d setObject:userInfo forKey:@"userInfo"];
    [d setObject:(image ? image : UIImagePNGRepresentation([UIImage imageNamed:@"ImageMissing.png"])) forKey:@"image"];
    [d setObject:cell.myImageView forKey:@"imageView"];
    [self performSelectorOnMainThread:@selector(setDownloadedImage:) withObject:d waitUntilDone:YES];
    [d release];
    [pool drain];
}
0 голосов
/ 10 сентября 2011

Вы звонили [tableView reloadData];?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...