2015-09-26 5 views
-1

Я работаю над UITableView, который действует как контрольный список. Мне нужно отобразить галочку, когда UITableViewCell постучал и спрятать галочку, когда UITableViewCell снова постучал. Я пробовал решение this, но я не смог построить из-за var checked = [Bool](). Как я могу решить это по-другому?Как скрыть и отобразить галочку на ячейке при прослушивании UITableViewCell?

EDIT Я добавил код ниже cellForRowAtIndexPath

if checked == true { 
      cell.accessoryType = .None 
      checked = false 
     } else if checked == false { 
      cell.accessoryType = .Checkmark 
      checked = true 
     } 
+0

вам может понадобиться для хранения важных деталей ваших строк в вашей модели, как, например, _title_, _subtitle_, ... и даже значение _checkState_. – holex

ответ

0
  • Добавить checked свойство типа Bool к вашей модели.
  • В cellForRowAtIndexPath: установите галочку в соответствии с свойством.
  • Когда ячейка используется для переключения свойства и перезагрузки ячейки или таблицы.
+0

Я следил за вашими инструкциями, но в ячейках таблицы были отмечены один флажок, а другой проверен, а следующий - как + - + - + - + - + - + -. Я добавил свойство как глобальное и добавил код, который я добавил в свой пост. –

+0

Нет, вы должны добавить свойство 'checked' к модели, которая представляет источник данных в виде таблицы, чтобы получить отдельные значения для каждой строки. Если вы используете словарь, добавьте ключ 'checked' с значением' Bool', если вы используете специальный класс (рекомендуется), добавьте свойство. – vadian

+0

Я загружаю данные из массива. Что вы подразумеваете под моделью? –

1

Я использую это: (Swift 3)

func tableView(_ tableView: UITableView, didSelectRowAtIndexPath indexPath: IndexPath) 
    { 
     if let cell = tableView.cellForRow(at: indexPath) { 
      if self.selectedIndexPaths.contains(indexPath) 
      { 
       cell.accessoryType = .none 
       self.selectedIndexPaths.remove(indexPath) 
      } 
      else 
      { 
       cell.accessoryType = .checkmark      
       self.selectedIndexPaths.add(indexPath) 
      } 
      // anything else you wanna do every time a cell is tapped 
     }  
    } 
Смежные вопросы