2

是否可以通过标签更新 iOS UITableView 中的单元格 imageView?我很欣赏其他可用的方法,但如果可能的话,我想使用标签。

我通过以下方式设置图像:

cell.imageView.image = [UIImage imageNamed:@"dinner.png"];

在另一种方法中,我可以通过(标签始终是唯一的)来获取单元格:

NSInteger the_tag = ((UIView*)sender).tag;
UITableViewCell *updateCell = (UITableViewCell*)[tableView viewWithTag:the_tag];

是否可以使用此方法更新单元格?这不起作用:

updateCell.imageView.image = [UIImage imageNamed:@"lunch.png"];

编辑:

仔细想想,标签是不好的使用方法。您可以使用(如果您有分区表,这将为您提供行和部分):

- (void) tableView: (UITableView *) tableView didSelectRowAtIndexPath: (NSIndexPath *) indexPath {
    NSLog(@"Tapped Row %@", indexPath);
    UITableViewCell *cell = [self->tableView cellForRowAtIndexPath:indexPath];
    cell.imageView.image = [UIImage imageNamed:@"lunch.png"];
}
4

4 回答 4

2
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
   CustomCell *cell = (CustomCell*)[tblView1 cellForRowAtIndexPath:indexPath.row];

   UIImageView *imageView = cell.imageView;//CustomCell you have imageView as @propertyVariable..
   imageView.image = [UIImage imageNamed:@"image.png"];
}

我希望它对你有帮助...

于 2013-10-25T08:40:06.560 回答
1

尝试打电话[updateCell setNeedsLayout][updateCell.imageView setNeedsLayout]

于 2013-10-25T08:20:03.120 回答
0

谢谢你的所有答案。回想起来,我觉得标签是一种不好的使用方法。我已经用我认为更好的解决方案更新了我的原始帖子。

于 2013-10-25T09:47:01.917 回答
0
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if(cell == nil){
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    cell.tag = indexPath.row;
    cell.imageView.image = [UIImage imageNamed:@"icon.png"];
}
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
int tag = 2;//this is same at table cell row number.
UITableViewCell *cell = (UITableViewCell*)[tableView viewWithTag:tag];
cell.imageView.image = [UIImage imageNamed:@"image.png"];
}
于 2013-10-25T09:48:02.993 回答