简体   繁体   中英

Update UITableView Cell imageView by Tag

Is it possible to update the cell imageView in an iOS UITableView by tag? I appreciate other methods are available but I would like to use tags if possible.

I set the image by:

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

And in another method I can get the cell by (Tags are always unique):

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

Is it possible to update the cell with this method? This does not work:

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

EDIT:

On reflection, the tags are bad method to use . You can use (Which will give you the row and the section if you have a sectioned table):

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

I hope it will be helpful for you...

尝试调用[updateCell setNeedsLayout][updateCell.imageView setNeedsLayout]

Thank you for all the answers. On reflection, I feel tags are a bad method to use. I have updated my original post with what I feel is a better solution.

- (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"];
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM