2014-09-05 8 views
8

Sono un programmatore per principianti che apprende rapidamente. Primo post qui.Errore: la finestra di UIView non è uguale alla finestra di un'altra vista

informazioni extra ma forse inutili
In questa applicazione ho creato, l'utente sceglie un'immagine sul controller vista principale e lo passa al secondo controller della vista. Lì l'immagine è suddivisa in pezzi e quei pezzi sono collocati in UIImageViews separate. L'obiettivo è metterli nell'ordine giusto scambiando le immagini.

Tutto funziona correttamente e funziona correttamente nel simulatore. Tuttavia, sto cercando di aggiungere animazioni di base (spostando le UIImageViews) ma non stanno eseguendo. So di avere la sintassi corretta per l'animazione perché ho testato il codice in un altro progetto.

domanda principale
Se navigando dal mio punto di vista principale controller per secondo controller di vista, un errore compare immediatamente nella console. Ecco cosa dice:

2014-09-04 17: 51: 33.489 TileGame [79951: 95150647] UIView: 0x7f7fe9c84600; frame = (0 0; 320 568); autoresize = W + H; layer = CALayer: 0x7f7fe9c848d0 >> La finestra di s non è uguale alla finestra di visualizzazione di TileGame.GameScreen: 0x7f7fe9dc6bc0>!

Non riesco a capire cosa significhi, ma non sembra che causi problemi se non per impedire l'animazione. Qualche idea??

Sembra che questa persona abbia un messaggio di errore simile ma forse più complicato della mia app. Modal viewcontroller UI not responsive after presentViewController:animated:completion:

Ecco tutto il mio progetto su GitHub: https://github.com/pakalewis/Parker-Lewis-CF/tree/master/TileGame

Grazie

risposta

26

Lei sembra avere alcuni fraintendimenti fondamentali di paradigmi di programmazione iOS. Hai folletti collegati ai tuoi pulsanti, ma puoi anche chiamare performSegue nel codice. Quando si ha un seguito collegato a un controllo, non è necessario alcun codice (e non dovrebbe avere alcun) per causare l'esecuzione del seguito. Inoltre, non si dovrebbe tornare a un precedente controller di vista con un seguito, diverso da un successivo svolgimento; non stai davvero tornando indietro, stai creando una nuova istanza del controller che pensi di tornare. Ciò causerà un accumulo di controller (dato che nessuno verrà deallocato) finché la tua app non esaurirà la memoria.

Quindi, è necessario eliminare la funzione, lasciaPlayButton: da MainScreen, e anche liberarsene nello storyboard (il seguito associato a quel pulsante è tutto ciò che serve).

Eliminare la segue avete intenzione "back" da GameScreen a MainScreen, e modificare il codice in backToMainScreen a questo,

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

Che ha fatto il trucco. Il messaggio di errore deve essere venuto dalla creazione di più controller uno sopra l'altro. Ho appena iniziato con roba per iOS e programmazione in generale, quindi i folletti mi hanno causato un po 'di confusione - ora ha molto più senso. Grazie per aver trovato il tempo di rispondere! – paka

Problemi correlati