如何在UITableViewCell中标记UIImage

时间:2011-05-13 02:01:06

标签: iphone objective-c uitableview uiimageview uiimage

我想切换UITableViewCell图像 - cell.imageView.image。 (例如,红色 - 绿色)

如果当前图像为绿色,则当用户单击UITableViewCell时,图像会变为红色。

设置图像后

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

如何检测当前使用的单元格是哪个图像?

感谢您的帮助!

4 个答案:

答案 0 :(得分:2)

imageView上设置tag

#define IMAGE_TAG_GREEN 50
#define IMAGE_TAG_RED   51

-(UITableViewCell*) tableView:(UITableView*) tableView cellForRowAtIndexPath:(NSIndexPath *) indexPath {
  static NSString *CELL_ID = @"some_cell";
  UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CELL_ID];
  if(cell == nil) {
     //do setup here...
     cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CELL_ID] autorelease];
     cell.imageView.tag = //some logic here...
  }
  if(cell.imageView.tag == IMAGE_TAG_GREEN) {
    //...
  } else {
    //...
  }
  return cell;
}

由于tag是来自UIView的继承属性,因此您无法将其与UIImage本身一起使用,但可以将其与{{{1>}一起使用1}}

答案 1 :(得分:1)

这有点粗糙,但您应该能够设置如下语句:

if ([cell.imageView.image isEqual:[UIImage imageNamed:@"Green.png"]]) {
    // image is green;
} else {
    // image is red;
}

我测试了它只是为了确保它工作正常

答案 2 :(得分:1)

我相信只需添加一个布尔表达式,如果为绿色则为TRUE,如果为红色则为FALSE。 将此布尔表达式设置为 extern type ,以便这可以是全局表达式。 单击图像时设置布尔值。 我相信这会有所帮助。

答案 3 :(得分:-1)

我是新手 - 但我想你可以使用if / then语句。

If (cell.imageView.image = [UIImage imageNamed:@"Green.png"]) {
    cell.imageView.image = [UIImage imageNamed:@"Green.png"];
} else
{
    cell.imageView.image = [UIImage imageNamed:@"Red.png"];
}

或者你可以非常喜欢并使用ternary operator。类似下面的内容(注意下面的代码可能是错误的 - 但希望能让你开始!):

cell.imageView.image = ([UIImage imageNamed:@"Green.png"]) ? 
    cell.imageView.image = [UIImage imageNamed:@"Green.png"]; : 
    cell.imageView.image = [UIImage imageNamed:@"Red.png"];

让我们知道你如何使用它。

Kolya