La spinta di un controller di navigazione non è supportta: l'esecuzione delle sequenze

Ho creato un nuovo controller di navigazione nel mio storyboard (non programmaticamente!) E l'ho impostato come "Root View Controller" su un normale UIViewController e ho aggiunto un button al suo interno che dice – avanti al controller di visualizzazione successivo (questo secondo controller di vista è un guarda il controller che voglio che abbia un button indietro per collegarsi al controller della vista iniziale). Ora, each volta che provo a colbind il button al controller della vista successivo, "La spinta di un controller di navigazione non è supportta".

Aiutathemes, per favore, e grazie

EDIT: ho sottoclassificato UINavigationController e non UIViewController nella mia class. Grazie lo stesso.

Solutions Collecting From Web of "La spinta di un controller di navigazione non è supportta: l'esecuzione delle sequenze"

Ho provato questo e non ho problemi, è tutto fatto in IB senza codice aggiuntivo richiesto …

  1. Avvia un nuovo progetto, "Applicazione vista singola" usando gli story board
  2. Seleziona lo storyboard ed elimina le viste prodotte.
  3. Trascina su un nuovo controller di navigazione (con esso verrà visualizzata una tabella)
  4. Elimina la tabella e il controller della vista tabella, così ti resta solo il controller di navigazione
  5. Trascina su un controller di visualizzazione normale
  6. Fare clic con il tasto destro e trascinare dal controller di navigazione alla nuova vista e scegliere "Relazione – Controller vista radice"
  7. Trascina un "Bar Button Item" sulla barra di navigazione che dovrebbe essere visibile nella parte superiore del ViewController, puoi rinominare questo Forward se lo desideri.
  8. Ora trascina su un altro controller di visualizzazione che è quello che il button "Avanti" spingerà per visualizzare.
  9. Fare clic con il tasto destro e trascinare dal button della barra sul 2 ° controller di visualizzazione e select "Push"

Esegui il progetto e otterrai una vista singola con una barra di navigazione e il tuo button, facendo clic sul button, spingerai l'altra vista e ti assegnerà un button Indietro per tornare al primo controller di visualizzazione. Proverò a postare una foto del mio storyboard se aiuta.

PushViewControllers

Plasma

Ho avuto lo stesso problema. Volevo avere un controller di navigazione su each storyboard, in modo che ognuno potesse essere eseguito indipendentemente, essere individualmente sottoposto a debug e in modo che l'aspetto risultasse corretto con la barra di navigazione.

Usando altri approcci, ho trovato che UINavigationController sarebbe stato mantenuto dallo storyboard originale – cosa che non volevo – o avrei avuto errori.

Usando l'AppDelegate nel controller di visualizzazione per impostare rootViewController ha funzionato per me (prendendo in prestito le convenzioni di denominazione dei passaggi da Segue a un altro storyboard? ):

 - (void)showStartupNavigationController { NSLog(@"-- Loading storyboard --"); //Get the storyboard from the main bundle. UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:@"Startup" bundle:nil]; //The navigation controller, not the view controller, is marked as the initial scene. UINavigationController *theInitialViewController = [storyBoard instantiateInitialViewController]; NSLog(@"-- Loading storyboard -- Nav controller: %@", theInitialViewController); //Remove the current navigation controller. [self.navigationController.view removeFromSuperview]; UIWindow *window = [(AppDelegate *)[[UIApplication sharedApplication] delegate] window]; window.rootViewController = theInitialViewController; 

Per scambiare le viste A livello di programmazione è necessario select il seguito e assegnargli un identificativo come "PushView", quindi chiamarlo in questo modo ….

 [self performSegueWithIdentifier:@"PushView" sender:self]; 

Quello programmaticamente farà lo stesso di fare clic sul button Avanti. Ti ho creato un progetto di esempio con il codice discusso sopra. Ha un – (IBAction) con codice in che puoi usare per modificare la vista in modo programmatico.

PushView.zip

Volevo anche farlo, presentare una schermata (con un controller di navigazione incorporato) quando l'utente preme un button.

Al mio primo tentativo, ho collegato i passaggi dal button nella prima schermata al controller di navigazione e l'app si è bloccata con questo errore "La spinta di un controller di navigazione non è supportta".

Questa è la soluzione che ho trovato:

Seleziona il seguito dal button nella prima schermata al controller di navigazione. Se avesse un identificatore, copia il suo nome. Quindi elimina quel seguito.

Quindi creare una nuova sequenza premendo CTRL-facendo clic sul button nel primo controller della vista e trascinando fino al CONTROLLORE VISTA CHE VUOI PRESENTARE (non al controller di navigazione che lo sta puntando), quindi seleziona Spingi nella piccola window a comparsa.

Quindi fai clic sull'icona al centro del seguito e incolla il nome che hai copiato nel primo passaggio come identificatore per esso.

IB ti darà un avvertimento "La scena è irraggiungibile a causa della mancanza di punti di ingresso e non ha un identificatore per l'accesso al runtime tramite -instantiateViewControllerWithIdentifier :." Non ti preoccupare, funziona perfettamente.

Se si desidera personalizzare la string mostrata come button Indietro per tornare, è ansible aggiungere questa row nel metodo viewDidLoad DEL CONTROLLER DI VISUALIZZAZIONE CHE VIENE VISUALIZZATO DOPO CHE IL PULSANTE È STATO PREMUTO , ovvero il controller della vista Figlio.
(sostituisci "Impostazioni" con il nome che ti serve)

 - (void)viewDidLoad { [super viewDidLoad]; self.navigationController.navigationBar.topItem.title = @"Settings"; ... }