uiTableView, ¿selecciona la fila seleccionada anteriormente?

Tengo un problema con la function de delegado didDeselectRowAtIndexPath . como cuando selecciono por primera vez, didDeselectRowAtIndexPath no se llama.

pero cuando selecciono otra celda, se llamó didDeselectRowAtIndexPath pero con la ruta de índice para la selección anterior.

tomemos un ejemplo:

  1. He seleccionado la fila en el índice 5. así que no ocurrirá nada.
  2. He seleccionado la fila en el índice 12, luego se llamará DeselectRowAtIndexPath con indexPath.row = 5.

No sé por qué sucedió esto, aquí está mi código: gracias

 class testUICollectionView: UIViewController ,UITableViewDelegate,UITableViewDataSource { let tableItems :NSMutableArray = ["Item 1", "Item 2", "Item 3", "Item 4", "Item 5", "Item 6", "Item 7", "Item 8", "Item 9", "Item 10", "Item 11", "Item 12", "Item 13", "Item 14", "Item 15","Item 12", "Item 13", "Item 14", "Item 15","Item 12", "Item 13", "Item 14", "Item 15"] var tableView:UITableView!; override func viewDidLoad() { super.viewDidLoad() self.view.backgroundColor = UIColor.blueColor(); tableView = UITableView(); tableView.frame = self.view.frame; tableView.registerClass(TableViewCell.self, forCellReuseIdentifier: "Cell"); tableView.dataSource = self; tableView.delegate = self; self.view.addSubview(tableView) } func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { // Return the number of rows in the section. return tableItems.count } func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! TableViewCell cell.setTextLabel(tableItems[indexPath.row] as! String); return cell } func tableView(tableView: UITableView, didDeselectRowAtIndexPath indexPath: NSIndexPath) { print("inexPath.row : " + String(indexPath.row)); } } ////////////////////////// table view cell class TableViewCell:UITableViewCell{ var label:UILabel!; func setTextLabel(new_text:String){ if (label == nil){ label = UILabel(); label.frame = self.contentView.frame; label.textColor = UIColor.whiteColor(); label.backgroundColor = UIColor.whiteColor(); label.textColor = UIColor.blackColor(); self.contentView.addSubview(label); } label.text = new_text; } } 

Solo se puede seleccionar una celda simultáneamente. Cuando selecciona otra celda, la celda que seleccionó anteriormente se cancelará de forma pnetworkingeterminada. Por eso didDeselectRowAtIndexPath: se llama con el indexPath anterior

Creo que su problema es que usa "didDeselectRowAtIndexPath" (hizo De selectRowAtIndexPath) mientras quiso usar "didSelectRowAtIndexPath".