如何在 UITableViewCell 中标记 UIImage

Posted

技术标签:

【中文标题】如何在 UITableViewCell 中标记 UIImage【英文标题】:how to tag UIImage in UITableViewCell 【发布时间】:2011-05-13 02:01:05 【问题描述】:

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

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

一旦我设置了图像

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

如何检测cell当前使用的是哪张图片?

感谢您的帮助!

【问题讨论】:

【参考方案1】:

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 本身一起使用,但您可以将它与UIImageView 一起使用

【讨论】:

【参考方案2】:

这有点粗略,但你应该可以像下面这样设置一个 if 语句:

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

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

【讨论】:

这比像我这样简单地比较ints 贵很多。【参考方案3】:

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

【讨论】:

【参考方案4】:

我是新手 - 但我想你可以使用 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"];

让我们知道你是怎么做的。

科利亚

【讨论】:

如前所述,不要比较图像,即使在桌面上也很昂贵。标记是首选方式,苹果在这里使用例如:developer.apple.com/library/ios/documentation/UserExperience/…

以上是关于如何在 UITableViewCell 中标记 UIImage的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Swift 3 中保存 UITableViewCell 附件复选标记的状态

在 Swift 中保存 UITableViewCell 复选标记选择

如何显示 UITableViewCell 附件复选标记

如何在 UITableView 的编辑模式下只显示复选标记选择而不选择整个 UITableViewCell?

CellForRowAtIndexPath 中给出的 UIButton 标记仅给出自定义 UITableViewCell 中的最后一个标记值

如何在uitableViewCell中保存UIButton的状态?