2016-06-01 14 views
1

Ich habe einen Show-Übergang zwischen zwei ViewControllern in meinem Storyboard. Bei Anruf performSegueWithIdentifier:, erhalte ich eine NSInvalidArgumentException:Storyboard denkt, dass Segue nicht existiert. Aber es tut

Receiver (<[MY VIEWCONTROLLER SUBCLASS]: 0x7fc9e99f0640>) has no segue with identifier 'HomeToSettings'' 

Die Segue existiert definitiv und angeschlossen ist, und es gibt viele andere segues auf dem gleichen Ursprung, die Viewcontroller funktionieren.

Im Quellcode für das Storyboard, zeigt das Segue wie alle Arbeitende auf:

<connections> 
<outlet property="notificationsButton" destination="hG9-8E-sv6" id="mn0-1x-Qxj"/> 
<outlet property="settingsButton" destination="Fy0-au-d6J" id="r1c-fG-KOP"/> 
<outlet property="tableView" destination="9bJ-Cd-hc3" id="Wuy-hJ-QVU"/> 
<segue destination="ad8-yH-D5h" kind="show" identifier="HomeToCreateList" id="bsg-J2-Gp3"/> 
//More segues... 
<segue destination="pNX-Jw-wau" kind="show" identifier="HomeToNotifications" id="B2t-BE-YpW"/> 
<segue destination="xge-ah-WXM" kind="show" identifier="HomeToSettings" id="nTa-qO-SCb"/> 
</connections> 

ich versucht habe:

  • das Storyboard
  • Löschen Umbenennen und die Neuen segue
  • Umbenennen des Abschnitts
  • Reinigung des Projekts
  • Die App
  • Reset-Inhalte und Einstellungen auf dem Simulator
  • Physikalisches Gerät Neuinstallieren

Xcode und iOS sind auf dem neuesten Stand zum 1. Juni 2016.

Wenn es irgendwie wichtig ist, Ich trigge den Übergang über eine IBAction, die an ein UIBarButtonItem angehängt ist, aus. Ein anderer Übergang zu einem anderen ViewController von einem anderen UIBarButtonItem funktioniert jedoch einwandfrei.

Die genaue Linie mit dem ich die Segue bin Aufruf ist:

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

ich hier wirklich bin verloren.

+0

helfen Haben Sie überprüft, ob die segue in der Größenklasse verfügbar ist Sie testen? – dasdom

+0

Wie mache ich das? –

+0

Gehen Sie in den Schnittstellen-Builder. Am Ende steht etwas "Any: Any" oder so. Wechseln Sie zu der Größenklasse, die Sie testen, und prüfen Sie, ob das Segment noch vorhanden ist. Übrigens: Interface Builder ist aus mehreren Gründen schlecht. Sie sollten die Benutzeroberfläche im Code erstellen. – dasdom

Antwort

1

Zum Beispiel haben Sie show segue genannt HomeToSettings von VC-A to VC-B dann können Sie nur [self performSegueWithIdentifier:@"HomeToSettings" sender:self]; von VC-A nur nennen.

Wenn Sie versucht haben, von einem anderen Controller aus anzurufen, wird ein Fehler ausgegeben.

Ich kopierte nur Ihre Aussage [self performSegueWithIdentifier:@"HomeToSettings" sender:self]; und ich fand einen seltsamen Charakter vor H Ihrer HomeToSettings String.

Sie können es mit der linken Pfeiltaste der Tastatur oder Rückseite überprüfen!

Charakter sieht aus wie

enter image description here

So entfernen Sie es von überall, wo Sie diese Kennung gesetzt.

Kopieren Sie die Bezeichner-Anweisung von unten und verwenden Sie sie, um in Interface Builder zu setzen und die folgende Anweisung zu verwenden, um die Überleitung auszuführen.

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

Hope this :)

+0

Du hattest absolut recht. Es gab ein DLE, nicht-druckendes ASCII-Zeichen am Anfang. Keine Ahnung, wie es dahin gekommen ist, aber du hast mich gerettet! –

+0

Ja Mann ...... :) – Lion

Verwandte Themen