我正在尝试在后台线程中加载本地存储的图像并将它们设置为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;
}
有人有什么想法吗?谢谢大家!
答案 0 :(得分:1)
正如您在错误中提到的那样,您正尝试将image
设置为类UITableView
的对象。是不可能的。
在你的代码中,这里是错误的:
UITableViewCell *cell = (UITableViewCell *)[self.tableView viewWithTag:0];
默认情况下,所有视图的默认视图tag
都设置为0
。当您向tableView
调用该方法时,它会先使用UIView
向您返回tag == 0
。我认为您没有更改UITableView *tableView
的默认代码,因此该方法会返回tableView
而不是UITableViewCell
。
在这种情况下,您需要选择正确的方式来访问相应的UITableViewCell *cell;
。