2015-10-19 1 views
1

У меня есть функция, которая меняет accessoryType ячеек в Раздел 0 на галочку. Он отлично работает и отображает галочку при выборе, но если ячейка находится в Раздел 1 или Выбран раздел 2, он будет перемещать галочки по адресу Раздел 0. Если кто-то скажет мне, как это исправить, это будет здорово.Swift: ячейки UITableView подвергаются воздействию ячеек в другом разделе

//Adds Checkmark to Cells when Selected 
    override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
     let section = 0 
     let numberOfRows = tableView.numberOfRowsInSection(section) 
     for row in 0..<numberOfRows { 
      if let cell = tableView.cellForRowAtIndexPath(NSIndexPath(forRow: row, inSection: section)) { 
       cell.accessoryType = row == indexPath.row ? .Checkmark : .None 
      } 
     } 
    } 
+0

У вас есть несколько вариантов включения? Я предполагаю, что вы можете выбирать только одну строку за раз, и поэтому вы теряете галочки при выборе чего-то еще. – Moriya

+0

Кроме того, почему бы не добавить тип атрибута при удалении ячейки в cellForRowatIndexPath? – Moriya

+0

Да У меня есть три раздела. Если я нажму первую ячейку моего второго раздела, она будет отмечать первую ячейку в первом разделе. То же самое касается второй и третьей ячеек каждого раздела. Я хочу только первый раздел использовать этот код. –

ответ

2

Поскольку ваша ячейка повторно используется, если вы не настроите настройки своей ячейки при их создании, это произойдет.

Вам необходимо установить accessoryType вашей соты обратно в cellForRowAtIndexPath функция переопределения.

+0

Не могли бы вы написать пример кода? Я не совсем понимаю. Мой стол был создан в раскадровке. Кроме того, я хочу, чтобы первый раздел был затронут кодом. –

+0

ваш стол создан в раскадровке, но вы «заполняете» ячейки в коде. И по соображениям производительности ячейки повторно используются. Поэтому, когда вы прокручиваете, новая ячейка, которую вы видите, будет старой, которая просто исчезла. Поэтому вам нужно отменить «все» настройки ячейки, чтобы избежать появления старого. – AncAinu

Смежные вопросы