2014-09-05 6 views
8

Ich bin ein Anfänger Programmierer lernen schnell. Erster Beitrag hier.Fehler: Das Fenster von UIView ist nicht gleich dem Fenster einer anderen Ansicht

Zusätzliche Informationen aber vielleicht nicht notwendig
In dieser App Ich habe wählt der Benutzer ein Bild auf dem Haupt-View-Controller und übergibt sie an die zweiten View-Controller. Dort wird das Bild in Stücke zerlegt und diese Teile werden in separaten UIImageViews platziert. Ziel ist es, sie in die richtige Reihenfolge zu bringen, indem Bilder ausgetauscht werden.

Alles funktioniert gut und es läuft gut im Simulator. Ich versuche jedoch, grundlegende Animationen hinzuzufügen (die UIImageViews verschieben), aber sie führen nicht aus. Ich weiß, dass ich die korrekte Syntax für die Animation habe, da ich den Code in einem anderen Projekt getestet habe.

Haupt Frage
Wenn ich von meinen Haupt-View-Controller auf den zweiten View-Controller navigieren, erscheint ein Fehler sofort in der Konsole. Hier ist, was es sagt:

2014-09-04 17: 51: 33.489 TileGame [79951: 95150647] UIView: 0x7f7fe9c84600; Rahmen = (0 0; 320 568); Autoresize = W + H; layer = CALayer: 0x7f7fe9c848d0 >> 's Fenster ist nicht gleich TileGame.GameScreen: 0x7f7fe9dc6bc0>' s Fenster der Ansicht!

Ich kann nicht herausfinden, was es bedeutet, aber es scheint keine Probleme zu verursachen, außer die Animation zu behindern. Irgendwelche Ideen??

Sieht aus, als hätte diese Person eine ähnliche Fehlermeldung, aber vielleicht komplizierter als meine App. Modal viewcontroller UI not responsive after presentViewController:animated:completion:

Hier ist meine ganze Projekt auf GitHub: https://github.com/pakalewis/Parker-Lewis-CF/tree/master/TileGame

Dank

Antwort

26

Sie scheinen einige grundlegende Missverständnisse von iOS Programmierparadigmen zu haben. Sie haben an Ihre Schaltflächen angehängte Segmente, aber Sie rufen auch performSegue im Code auf. Wenn Sie ein Segment an ein Steuerelement angehängt haben, benötigen Sie keinen Code (und sollten keinen haben), um die Ausführung des Segments zu veranlassen. Sie sollten auch nicht zu einem vorherigen View-Controller mit einem anderen Segment als einem Abwicklungssegment zurückkehren. Du gehst nicht wirklich zurück, du erstellst eine neue Instanz des Controllers, von dem du denkst, dass du zurückgehst. Dies führt zu einem Aufbau von Controllern (da keine freigegeben werden), bis der Speicherplatz in Ihrer App erschöpft ist.

Also, Sie sollten die Funktion, letsPlayButton: von MainScreen zu löschen, und auch loswerden es im Storyboard (das Segment an diese Schaltfläche ist alles was Sie brauchen).

löschen segue Sie gehen "zurück" von GameScreen zu Mainscreen und den Code ändern, um dies in backToMainScreen zu,

@IBAction func backToMainScreen(sender: AnyObject) { 
     self.dismissViewControllerAnimated(true, completion: nil) 
    } 
+0

, die den Trick tat. Die Fehlermeldung muss von mehreren Controllern stammen, die übereinander liegen. Ich beginne gerade mit iOS-Sachen und Programmierung im Allgemeinen, so dass die Übergänge mich etwas verwirrt haben - macht jetzt viel mehr Sinn. Danke, dass du dir die Zeit genommen hast zu antworten! – paka

Verwandte Themen