2015-01-12 17 views
8

Ich bin mit einem seltsamen Verhalten UITableView konfrontiert und ich weiß nicht, woher das kommt. Ich baue eine sehr einfache Einzelansicht IOS8 Swift Anwendung mit einem ersten ViewController mit einem UITableView darin und einer benutzerdefinierten Bildzelle. Wenn ich auf eine Zelle klicke, gehe ich zu meiner SecondViewController.UITableView didSelectRowAtIndexPath manchmal nach dem zweiten Tippen

Mein UITableView-Delegat und die Datenquelle sind mit dem ersten ViewController verbunden. Alles funktioniert, außer wenn ich auf eine Zelle tippe, manchmal muss ich zweimal tippen, um die Segue auszulösen.

Hier ist meine didSelectRowAtIndexPath Funktion:

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

Mein Druck ist immer die richtige indexPath zurück. Ist es ein Ansichtshierarchieproblem oder etwas anderes?

Vielen Dank JD

+0

Interessant zu beheben, können Sie ein wenig mehr Code teilen? ist das auf dem Simulator oder realen Gerät? – Woodstock

+0

Simulator und echtes Gerät –

+0

Wird die 'println' nur einmal oder zweimal ausgelöst? – pbasdf

Antwort

10

Versuchen Sie es.

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

Dies ist ein Fehler in iOS 8, denke ich. UITableViewCell selection Storyboard segue is slow - double tapping works though

+0

Interessant, also ist das Umleiten des Anrufs in die Hauptwarteschlange ein Workaround für den Fehler? – Woodstock

+0

Das hat bei den anderen beiden funktioniert. komisch. – rakeshbs

+0

Danke, dass es jetzt richtig funktioniert! –

0

Sie haben [tableView deselectRowAtIndexPath:indexPath animated:YES]; zu nennen diese

Verwandte Themen