设置UITableView图像

时间:2011-09-22 14:48:23

标签: iphone uitableview uiimageview

我正在尝试在后台线程中加载本地存储的图像并将它们设置为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 个答案:

答案 0 :(得分:1)

正如您在错误中提到的那样,您正尝试将image设置为类UITableView的对象。是不可能的。

在你的代码中,这里是错误的:

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

默认情况下,所有视图的默认视图tag都设置为0。当您向tableView调用该方法时,它会先使用UIView向您返回tag == 0。我认为您没有更改UITableView *tableView的默认代码,因此该方法会返回tableView而不是UITableViewCell

在这种情况下,您需要选择正确的方式来访问相应的UITableViewCell *cell;