Jonnyx Delavilla Jonnyx Delavilla -4 years ago 61
Swift Question

UITableView didSelectRowAtIndexPath sometimes called after second tap

I'm facing a curious

UITableView
behaviour and i don't know where this is coming from.
I'm building a very simple single view IOS8 Swift application with a first
ViewController
with a
UITableView
inside it and one custom Image cell. When i tap on a cell it Segue to my
SecondViewController
.

My UITableView delegate and datasource is connected to the first ViewController.
Everything is working except when i tap a cell sometimes i have to tap it twice to trigger the Segue.

Here is my
didSelectRowAtIndexPath
function:

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
println("You clicked on \(indexPath.row) row")
self.performSegueWithIdentifier("homeToDetail", sender:self)
}


My print is always returning the correct indexPath.
Is it a view hierarchy problem or something else ?

Thank you JD

Answer Source

Try this.

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
  dispatch_async(dispatch_get_main_queue(), {
    self.performSegueWithIdentifier("homeToDetail", sender:self)
  })
}

This is a bug in iOS 8, I think. UITableViewCell selection Storyboard segue is slow - double tapping works though

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download