2015-01-11 17 views
19

Ho riscontrato un arresto anomalo durante il test della mia app. L'immagine seguente è il mio storyboard:performSegueWithIdentifier non ha alcun seguito con identificatore

storyboard

Ho il codice in View Controller:

@IBAction func unwindToHomeScreen(segue:UIStoryboardSegue) { 

} 

La vista di "Aggiungi nuova voce" hanno un pulsante "Annulla", ho controllato-trascinamento fino all'icona "Esci" nella parte superiore e il collegamento a unwindToHomeScreen, funziona correttamente.

La "Add New Item" ha una classe AddTableViewController e il codice che ho scritto dentro:

@IBAction func save() { 
    // Execute the unwind segue and go back to the home screen 
    performSegueWithIdentifier("unwindToHomeScreen", sender: self) 
} 

ho controllato trascinare il pulsante "Salva" per il func, ma l'incidente applicazione quando si fa clic sul pulsante

Io invece posso usare dismissViewControllerAnimated(true, completion: nil), ma mi chiedo perché il performSegueWithIdentifier non funziona?

Ho letto il codice allo dropbox.com/s/hpybgg9x67rtqng/foodpinstatictable.zip?dl=0 e provo a crearne uno e ad usare performSegueWithIdentifier come questo esempio per esercitarmi, non ho visto l'identificatore dei passaggi su di lei, qual è la differenza?

+0

Hai veramente dare il vostro segue un identificatore nel storyboard? Il nome della funzione nel controller a cui si sta tornando non è un identificatore. – rdelmar

+1

Ho risolto il problema, quando controllo-trascinare "Annulla" sull'icona "Esci" e collego a "unwindToHomeScreen", visualizzerò il messaggio "Unwind segue to Scene Exit Placeholder" sulla struttura del documento sotto "Aggiungi nuovo Item Scene ", e poi ho capito Identitier come" unwindToHomeScreen " – Ian

risposta

45

In realtà non è stato fornito un identificatore. unwindToHomeScreen è una funzione che è possibile chiamare; quello che stai cercando è l'identificatore segue, che si trova in Interface Builder come questo:

Set an identifier

In questo esempio, ho un tasto cablata alla visualizzazione successiva tramite Interface Builder come lei descrive (" Interface Builder ") e un pulsante che viene collegato a questa IBAction a mio controller della vista (" programmazione "):

@IBAction func goToNextView(sender: UIButton!) { 
    self.performSegueWithIdentifier:("go", sender: self) 
} 

in ogni caso, che cosa vi state perdendo è l'identificatore effettivo, che può essere impostato in attributi di un seguito creato in Interface Builder.

+1

grazie per la risposta dettagliata, che mi aiuta a scoprire il problema – Ian

2

Ho scoperto che poiché ho rinominato il mio controller di visualizzazione, avevo bisogno di eliminare e ricreare il seguito.

-1

per me -> cliccare sul rapporto-freccia tra vista controllori e quindi selezionare l'attributo ispettore, c'è identificatore indicare il nome e selezionare classe di spinta fatto ...

Problemi correlati