简体   繁体   中英

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

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

You have to call [tableView deselectRowAtIndexPath:indexPath animated:YES]; to fix this

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM