как пометить UIImage в UITableViewCell - PullRequest
0 голосов
/ 13 мая 2011

Я хочу переключить изображение UITableViewCell - cell.imageView.image.(например, красный <-> зеленый)

Если текущее изображение зеленого цвета, изображение, предположительно, изменится на красный, когда пользователь щелкнет UITableViewCell.

Как только я установлю изображение

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

Как определить, какое изображение используется в данный момент в ячейке?

Спасибо за любую помощь!

Ответы [ 4 ]

2 голосов
/ 13 мая 2011

Установите tag на самом imageView:

#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

1 голос
/ 22 июля 2011

Полагаю, просто добавьте логическое выражение и сделайте его ИСТИНА, если он зеленый, и ЛОЖЬ, если он красный.Сделайте это логическое выражение extern type , чтобы оно могло быть глобальным выражением.Установите логическое значение при нажатии на изображение.Я верю, что это поможет.

1 голос
/ 13 мая 2011

Это немного грубо, но вы должны быть в состоянии настроить оператор if следующим образом:

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

Я проверил его, чтобы убедиться, что он работает нормально

0 голосов
/ 13 мая 2011

Я новичок в этом - но я думаю, что вы могли бы использовать оператор 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"];
}

Или вы могли бы по-настоящему придумать и использовать троичный оператор .Что-то вроде следующего (обратите внимание, что приведенный ниже код, вероятно, неправильный - но, надеюсь, стоит начать!):

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

Дайте нам знать, как вы поступите с этим.

Коля

...