Выбор в UITableView приводит к исчезновению строк вместо вызова tableView делегата (_: didSelectRowAt :) (Swift) - PullRequest
0 голосов
/ 24 ноября 2018

Я использую несколько небольших табличных представлений.При нажатии на строку я просто хочу, чтобы она показала небольшую галочку, поэтому в источник данных TableView я добавил этот метод:

public func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
  print("Did Select Row at \(indexPath.row)")
  tableView.cellForRow(at: indexPath)?.accessoryType = .checkmark
}

Довольно просто, но когда выбор сделан в tableView, всесодержимое таблицы исчезнет, ​​и галочка не будет сделана.Я явно вызвал функцию didSelectRowAt, и она работала нормально (в ячейке появилась небольшая галочка, и она напечатала оператор print).

Просто интересно, есть ли у кого-нибудь объяснение этому странному поведению.Вот полное определение Delegate / DataSource (я не использовал контроллер, потому что он не является главной целью приложения).

public class TableController : NSObject, UITableViewDataSource, 
 UITableViewDelegate {
   private var data : [String]
   private var height : CGFloat


   init(_ data : [String], cellHeight : CGFloat) {
     self.data = data
     self.height = cellHeight
   }

  public func tableView(_ tableView: UITableView, numberOfRowsInSection 
  section: Int) -> Int {
    return data.count
  }

  public func tableView(_ tableView: UITableView, cellForRowAt 
  indexPath: IndexPath) -> UITableViewCell {
    print("-cell for row at \(indexPath.row) \n")
    let cell = UITableViewCell(style: .default, reuseIdentifier: nil)
    cell.textLabel!.text = data[indexPath.row]

    return cell
 }

  public func tableView(_ tableView: UITableView, didSelectRowAt 
indexPath: IndexPath) {
    print("Did Select Row at \(indexPath.row)")
    tableView.cellForRow(at: indexPath)?.accessoryType = .checkmark
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...