2016-05-04 6 views
0

Я пытаюсь показать галочку на ячейке tableview, но галочка появляется только иногда, и она исчезает при прокрутке.Как добавить галочку в tableview swift

Ниже код:


 
    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 
 
    { 
 
     let cell = tableView.dequeueReusableCellWithIdentifier("vvxxx12", forIndexPath: indexPath) 
 
    
 
     // Configure the cell... 
 
     
 
    cell.textLabel?.text = self.dataArray[indexPath.row] as? String //in dataArray values are stored 
 
       
 

 
     if dataArray.containsObject(indexPath) 
 
     { 
 
      cell.accessoryType = .Checkmark 
 
     } 
 
     else { 
 
      cell.accessoryType = .None 
 
     } 
 
     return cell 
 
     } 
 

 
     func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
 
      if let cell = tableView.cellForRowAtIndexPath(indexPath) { 
 
       if cell.accessoryType == .Checkmark { 
 
        cell.accessoryType = .None 
 
        
 
       } else { 
 
        cell.accessoryType = .Checkmark 
 
        
 
       } 
 
      }  
 
     }

+0

Просто проверить мой данный код, его работа правильно. если его работа для вас, пожалуйста, поддержите и примите мой ответ. –

+0

Оформить заказ на новый код, указанный в snaps –

+0

@Pavan У меня возник вопрос, когда мне нужно выбрать только один элемент с помощью галочки, как я могу это сделать, и предыдущая галочка удаляется, поэтому, пожалуйста, помогите мне – globalworld

ответ

2

Просто сделайте следующие изменения в коде, чтобы сохранить метку в Tableview во время прокрутки Tableview

enter image description here

Результат:

enter image description here

Его работа отлично теперь, любая проблема, дайте мне знаю, что я обязательно помогу вам выйти. Наслаждайтесь.

+0

спасибо, но в методе tableviewdidselect, когда я пишу cell.accessoeyType он показывает мне ошибку, т. е. используется идентификатор unresolve, также я, добавляю объект и удаляю метод объекта, но он показывает, что массив не имеет такого memer – globalworld

+0

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

+0

yup ... это работает спасибо @Pavan – globalworld

0
cell.textLabel?.text = self.dataArray[indexPath.row] as? String 

Это говорит о том, что dataArray содержит строки.

if dataArray.containsObject(indexPath) 

Это означает, что dataArray содержит указательные дорожки. Оба они не должны быть правдой. Один массив для данных имеет смысл, а другой для выбранных строк или строк, которые нужно проверить, также имеет смысл, но не тот же массив для обоих.

Что, вероятно, происходит это:

  • Row выбрано - ячейка обновляется, чтобы иметь галочку аксессуар
  • Таблицы прокручиваются и cellForRowAtIndexPath называется - ни в какой точке будет dataArray содержать путь индекса, поэтому аксессуар всегда очищается.

Вам необходимо обновить свою модель при выборе строки, сохранить путь указателя к выбранной строке или обновить выбранный флаг на объектах модели.

1

Для Swift 3 следующий работал для меня до

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
    yourtableView.cellForRow(at: indexPath as IndexPath)?.accessoryType = .checkmark 
} 

func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) { 
    yourtableView.cellForRow(at: indexPath as IndexPath)?.accessoryType = .none 
} 

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

  • Нет связанных вопросов^_^