установить изображение UITableView - PullRequest
1 голос
/ 22 сентября 2011

Я пытаюсь загрузить локально сохраненные изображения в фоновом потоке и установить их как изображения UITableViewCell.Я получаю исключение и не знаю, как к нему подойти.

Вот мой код:

- (void)loadImageInBackground:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

NSString *path = [[tableImages objectAtIndex:indexPath.section]objectAtIndex:indexPath.row];

UIImage *img = [[UIImage alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:path ofType:@"png"]];

[self performSelectorOnMainThread:@selector(assignImageToImageView:) withObject:img waitUntilDone:YES];

[img release];  
[pool release];
}

- (void) assignImageToImageView:(UIImage *)img
{

UITableViewCell *cell = (UITableViewCell *)[self.tableView viewWithTag:0];

((UIImageView *)cell.imageView).image = img;
}

У кого-нибудь есть идеи?Спасибо всем!

1 Ответ

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

Как уже упоминалось в вашей ошибке, вы пытаетесь установить image для объекта класса UITableView. Это невозможно.

В вашем коде это ошибка здесь:

UITableViewCell *cell = (UITableViewCell *)[self.tableView viewWithTag:0];

По умолчанию все виды имеют вид по умолчанию tag, установленный на 0. Когда вы вызываете этот метод для вашего tableView, он сначала возвращает вас UIView с tag == 0. Я думаю, что вы не изменили тег по умолчанию для вашего UITableView *tableView, так что метод возвращает вас tableView, а не UITableViewCell.

В этом случае вам необходимо выбрать правильный способ доступа к соответствующему UITableViewCell *cell;.

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