更改UITableViewCell的图像

时间:2012-04-09 11:28:22

标签: iphone objective-c cocoa-touch uitableview

我有一个使用UITableViewCellStyleDefault样式的UITableView。我也设置了详细配件:

    cell.accessoryType= UITableViewCellAccessoryDetailDisclosureButton;

我希望代码能够在按下细节附件时生成委托方法accessoryButtonTappedForRowWithIndexPath :,将该特定单元格的图像更改为另一个图像。

我该怎么做?我是否需要以某种方式重新创建单元格?

谢谢!

5 个答案:

答案 0 :(得分:3)

不,您只需将其他图像添加到单元格的imageview中

UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
cell.imageView.image = [UIImage imageNamed:@"IMAGENAME"];

答案 1 :(得分:3)

- (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *aCell = [tableView cellForRowAtIndexPath:indexPath];
    // Now You have your sekected cell, you can set the image which you have set on this cell
    UIImageView  *aView = (UIImageView*)[aCell viewWithTag:1];
    // Now change the image of aView
}

答案 2 :(得分:2)

在你的accessoryButtonTappedForRowWithIndexPath方法中使用 -

UITableViewCell *cell = [tableView.delegate cellForRowAtIndexPath:indexPath];
cell.accessoryView = [[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"yourImage.png"]] autorelease];

答案 3 :(得分:1)

我从来没有这样做过,但我会尝试像

这样的东西
-accessoryButtonTappedForRowWithIndexPath..{
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
    // change the view of cell here
}

只是一个想法,请在您的问题中添加一些您迄今为止尝试过的代码。

答案 4 :(得分:1)

您可以更改基础数据结构的图像。之后,在适当的索引路径重新加载单元格。

例如,我假设您的数据是一个简单的NSArray,其中包含NSDictionary对象。字典包含几个键,如“text”和“image”。在cellForRowAtIndexPath:中,您将使用适当字典中的值来设置cell.text和cell.image。

那么,在accessoryButtonTappedForRowWithIndexPath:(或者你想要didSelectRowAtIndexPath:?)中,你会做同样的事情:

NSDictionary* dict = [myArray objectAtIndex:indexPath.row];
[dict setValueForKey:@"image":myNewImage];
[self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation: UITableViewRowAnimationAutomatic];

请记住,这是伪代码,未经过测试,但会让您了解如何操作。