Включение / выключение ячейки в UITableView в той же ячейке в том же представлении

#iphone #uitableview #didselectrowatindexpath

#iPhone #uitableview #didselectrowatindexpath

Вопрос:

Возможно ли заставить одну ячейку в UITableView иметь режим включения / выключения? В принципе, когда я нажимаю на ячейку, она становится зеленой, чего я и хочу. Это не переходит к другому ViewController или чему-либо еще. Но затем, когда я снова нажимаю на ту же ячейку в том же виде, я хочу, чтобы зеленый исчез и вернулся к своему предыдущему цветовому состоянию.

Вот как у меня есть мой didSelectRowAtIndexPath

 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    NSString *selectedPhrase = [dataTable objectAtIndex:indexPath.row];
    [self setCurrentPhrase:selectedPhrase];
}
  

Это кажется простым вопросом. Я знаю, что могу перейти к [tableView deselectRowAtIndexPath:indexPath animated:YES]; , но это просто делает ее неосвещенной сразу после того, как я нажимаю на нее.

Спасибо!

Аарон

Ответ №1:

вы могли бы изменить цвет фона UITableViewCell при выборе, поэтому вы можете использовать BOOL, который подскажет вам, чем заливать фон (зеленым или просто прозрачным цветом).

Получите доступ к вашей ячейке с помощью приведенного ниже метода

 - (UITableViewCell *)cellForRowAtIndexPath:(NSIndexPath *)indexPath
  

Используйте приведенный ниже код в качестве справочного.

 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    NSString *selectedPhrase = [dataTable objectAtIndex:indexPath.row];
    [self setCurrentPhrase:selectedPhrase];

      MyCutsomCell* myCell= (MyCutsomCell*)[tableView cellForRowAtIndexPath:indexPath];
      if(myCell.isGreen)
      {
         //Change backgroundColor to Green
      }
      else
      {
         //Clear backgroundColor
      }

      myCell.isGreen = !myCell.isGreen;
}
  

Комментарии:

1. Это было хорошее предложение, использовал кое-что из этого, чтобы заставить его работать. Спасибо!