5

Prima di tutto, non voglio affatto usare gli storyboard. Sono in grado di "presentare" il controller della vista mirata, ma non riesco a visualizzarlo con il pulsante standard di iOS in alto. La mia comprensione è che posso farlo funzionare spingendo il controller invece di presentarlo. Non ho errori, ma non succede nulla.Come spingere una nuova vista senza gli storyboard Swift

Su un pulsante, fare clic su questo codice. Il codice commentato è quello che ha presentato con successo la ForgotPasswordPage:

// Modifiche alla pagina dimenticata

func forgotPasswordSwitch(sender: UIButton!) { 
    //let ForgotPassword:ForgotPasswordPage = ForgotPasswordPage() 
    //self.presentViewController(ForgotPassword, animated: true, completion: nil) 
    let ForgotPassword = ForgotPasswordPage() 
    self.navigationController?.pushViewController(ForgotPassword, animated: true) 
} 
+0

Hai ragione - nuova necessità di utilizzare un controller di navigazione per essere in grado di spingere un controller della vista . Dato che non stai usando uno storyboard dovrai creare tu stesso l'istanza di UINavigationController e usarlo per presentare il tuo controller di visualizzazione iniziale – Paulw11

+0

@ Paulw11 potresti elaborarlo per favore? Ho dichiarato sia la pagina dalla quale mi sto spostando, sia quella di UINavigationControllers. Cos'altro devo fare? – DMop

+0

Non si dichiarano i controller di visualizzazione come sottoclassi UINavigationController. Un UINavigationController è un controller di visualizzazione del contenitore. Ne crei uno, assegna il tuo primo controller di visualizzazione al suo contenuto e quindi presenta UINavigationController. Il riferimento alla classe spiega come funziona https://developer.apple.com/library/ios/documentation/UIKit/Reference/UINavigationController_Class/ – Paulw11

risposta

2

È necessario creare manualmente un UINavigationcontroller per ottenere la barra posteriore. Per fare questo è possibile utilizzare il codice da this answer, che realizza questo utilizzando questo codice:

self.window = UIWindow(frame: UIScreen.mainScreen().bounds) 
var nav1 = UINavigationController() 
var mainView = ViewController() //ViewController = Name of your controller 
nav1.viewControllers = [mainView] 
self.window!.rootViewController = nav1 
self.window?.makeKeyAndVisible() 

Qui basta aggiungere tutti i ViewControllers si desidera essere sotto il controller di navigazione nella matrice e poi spinta fra loro.

Speranza che aiuta, Julian

+0

Grazie mille per la risposta! Ho una pagina di accesso e sto mirando a consentire all'utente di fare clic sul pulsante "password dimenticata" o "registro account" e quindi avere la possibilità di fare clic indietro in alto e andare alla pagina di accesso. Dovrei usare questo codice per farlo? Questo codice sembra creare immediatamente una pila di tutti i controller di visualizzazione nell'array. Quindi il codice che ho originariamente non mi permetterà di spingere tra loro quando si fa clic su un pulsante. – DMop

+0

Si potrebbe. Non è l'approccio migliore ma funzionerebbe. In questo caso, suggerirei di creare una barra di navigazione e non un controller a livello di codice, quindi chiudere semplicemente il controller della vista quando viene premuto il pulsante Indietro. Il pulsante Indietro in questo caso dovrebbe essere quindi un 'BarButtonItem' che come azione disattiva il controller della vista. Tuttavia il codice dovrebbe funzionare bene. Spero che sia stato chiaro. Se hai bisogno di ulteriori elaborazioni, non esitare a chiedere :-) –

+0

Grazie! Darò una prova! – DMop

0

so che a volte è molto meglio sviluppare applicazioni a livello di codice, ma ci sono molte volte che Storyboard si può risparmiare un sacco di tempo. Basta semplicemente utilizzarlo per questo situazioni ...

1) In te Storyboard, localizzare il controller della vista che si desidera attivare per la spinta di

2) Selezionare e trovare la "Editor" nella barra in alto

3) Selezionare Editor-> Embed In-> Navigation controller

e ora il tuo controller di vista è pronto per la spinta di

+0

Lo stiamo facendo in questo modo soprattutto perché si sincronizza più facilmente con github. Grazie comunque! – DMop

Problemi correlati