2016-05-09 1 views
0

Hallo Ich habe ein Spiel mit SpriteKit gemacht und wollte eine Bestenliste mit einem UITableView hinzufügen. Meine Übergänge funktionieren perfekt von meinem GameViewController zum TableViewController und zurück. Allerdings kann ich das nur einmal machen. Sobald ich zu meinem GameViewController zurückgekehrt bin, werde ich nicht mehr zum zweiten Mal mit dem TableViewController verbunden. Warum passiert dies?Segue funktioniert nur einmal?

Ich richte es so, wenn ein bestimmter SKSpriteNode angezapft wird, geht es zum TableViewController. Derzeit bin ich mit dieser Codezeile aus dem GameViewController zum TableViewController segue (Dieser Code ist in GameScene.swift)

self.view!.window!.rootViewController!.performSegueWithIdentifier("showScores", sender: self) 

ich dann Setup eine Zurück-Taste innerhalb einer Navigationsleiste und erstellt einen Übergang zurück zum GameViewController (indem Sie die BarButtonItem auf den GameViewController ziehen und presentModally auswählen). Etwas Hilfe wäre willkommen. Vielen Dank!

Antwort

1

Ich denke, Sie segeln in die Rangliste, segeln zurück, aber dabei die Hauptspielansicht zum Stapel hinzufügen, anstatt die Bestenliste zu entfernen, also wenn Sie versuchen, wieder zu segeln, ist es nicht die sichtbare Spielszene empfängt den Anruf.

Versuchen Sie dies ist eher als ein Übergang in Ihrer Rangliste Code (wo Sie bitten, um das Spiel Szene segue zurück):

self.dismissViewControllerAnimated(true, completion: nil) 

Wenn das nicht einen Delegaten verwenden funktioniert das Spiel Szene zu bitten, die Rangliste ablehnen.

Edit: Ich war weitschweifig und ausgereizt meine Wortanzahl für den Kommentar, also dachte ich würde meine Erklärung hier hinzufügen!

Stellen Sie sich den Stapel als einen Stapel Papier vor, wobei jedes Stück Papier ein viewController ist, wobei das oberste Stück das ist, das (natürlich) sichtbar ist. Wenn Sie einen viewController modal überleiten oder präsentieren, fügen Sie dem Stapel einen viewController hinzu oder "fügen Sie ein Stück Papier zu Ihrem Stapel hinzu". Im Allgemeinen ist es dann eine schlechte Idee, sich hin- und herzubewegen, wie Sie es getan haben, weil Sie immer mehr "Papierstücke" zum Stapel hinzufügen. Sie neigen dazu, Gedächtnisprobleme und/oder irritierende Fehler zu bekommen: P. Stattdessen gilt es, eines der beiden folgenden Dinge zu beachten: Wenn Sie einen navigationController verwenden, sollten Sie popViewControllerAnimated aufrufen, oder wenn Sie nicht wie in diesem Fall sind, sollten Sie disneyViewControllerAnimated verwenden. Beide Funktionen nehmen das oberste Stück Papier vollständig vom Stapel. Behebung des Problems, dass die viewControllers dem Stack kontinuierlich hinzugefügt werden. Wenn irgendetwas davon verwirrend war (ich schreibe das auf meinem Handy, könnte es sein!), Dann schick mir einfach einen Kommentar oder eine Nachricht und ich werde versuchen, es besser zu erklären! :)

+0

Funktioniert wie ein Charme! Obwohl ich gerne wissen würde, was du meinst, indem du die Hauptansicht des Spiels dem Stapel hinzufügst. Schätze die Hilfe! –

+0

@ C.Wagner hat mir gerade eine Antwort gegeben, um zu erklären, was ich meine (in scheinbar qualvollen Details zurückblickend, sorry, ich kann ein bisschen waffle!) –

+0

Nur eine Randnotiz, disneyViewControllerAnimated ist ein bisschen komplexer als ich erklärte. Dies zu tun funktioniert in der Regel gut, aber lesen Sie die Dokumentation sowieso, damit Sie sich dessen bewusst sind. –