Xcode 8 beta 6 Unwind segue scheint unterbrochen zu sein, weil "WithSegue" automatisch zum Namen der @IBAction unwind Methode hinzugefügt wird

8

Ich habe gerade festgestellt, dass ich in der aktuellen Xcode 8 beta 6 eine Abwicklungsaktion an zB eine Balkenschaltfläche in einem modal präsentierten View-Controller anschließe, um den modalen Präsentationsweg abzuwickeln und den View-Controller vorher einzublenden Im Navigationsstapel fügt Xcode dem Namen der vorhandenen @IBActions, die für diesen Zweck verwendet werden können, einen "WithSegue" hinzu, der den Abwicklungsabschnitt unterbricht (er wird nicht ausgeführt). Wenn ich die Storyboard-Datei im Quellcode (als XML) bearbeite und dieses "WithSegue" aus dem @IBAction-Methodenbezeichner entfernt, funktioniert das Segment wie erwartet. Zum Beispiel heißt meine Abwicklungsmethode im ursprünglichen View-Controller (das Ziel für das Abwicklungssegment) "unwindFromSettingsToTableView" - und Xcode / Interface Builder benennt diese Methode in "unwindFromSettingsToTableViewWithSegue" um, wenn ich das bar-Button-Element im modal präsentierten STRG-verknüpfe Zeigen Sie den Controller dem Exit-Element des View-Controllers im Szenendock an.

Ist das ein Fehler in der Xcode 8 Beta? Ist es ein bekannter Fehler? Fehle ich etwas?

Ich habe meine zuvor verbundenen Abwicklungssegmente (verbunden in Xcode 7) überprüft und sie haben dieses "WithSegue" -Suffix nicht. Wenn ich diese vorhandenen "alten" Abwicklungssegmente lösche und sie erneut in Xcode 8 verbinde, schlägt Interface Builder nun den gleichen Methodennamen mit dem Suffix "WithSegue" vor - und diese Segmente brechen. Wenn ich das Suffix im Storyboard-Quellcode lösche, funktioniert das Abwicklungssegment wieder.

Wäre toll, irgendwelche Hinweise zu bekommen. Dieses Verhalten ist ärgerlich.

Beste Wünsche! Björn

    
bBcdd 21.08.2016, 12:52
quelle

3 Antworten

7

Wenn Sie in Swift 3 WithSegue nicht hinzufügen möchten, definieren Sie Ihre @IBAction -Methode, um den ersten Parameter nicht zu benennen:

%Vor%

Wenn Sie diese _ -Syntax nicht verwenden, wird% ce_de% hinzugefügt, wenn @IBAction angehängt wird.

Wenn ich die obige Syntax für meine Abwicklungsaktion verwende, funktioniert sie in Xcode 8, Beta 6 gut.

Nebenbei, wenn ich die WithSegue -Syntax oben in Beta 6 nicht verwende, benennt sie die Aktion _ , aber sie funktioniert immer noch mit diesem längeren Namen, ohne dass die Storyboard-XML bearbeitet werden muss. Ich frage mich, ob Ihr nicht funktionierendes Abwicklungssegment das Ergebnis eines anderen Problems ist. Wir brauchen ein reproduzierbares Beispiel für das Problem, um weiter zu diagnostizieren. Vielleicht können Sie ein MCVE teilen.

    
Rob 21.08.2016, 16:34
quelle
3

Ich hatte das selbe Problem wie OP, mit swift 2.3 in xcode 8 beta 6.

Dieser Beitrag mit ios 8 erklärt wie man das Segment programmatisch abwickelt. Und in Schritt drei wählen Sie das Abwicklungssegment in der Dokumentenübersicht.

Wählen Sie dies aus und ändern Sie unwindToSecondVCWithSegue in Action oben rechts in unwindToSecondVC , damit es mit dem Code übereinstimmt, der mein Problem gelöst hat.

%Vor%

    
kometen 30.08.2016 20:31
quelle
0

Dieses Problem tritt immer noch bei der freigegebenen Version von Xcode 8.0 auf, nicht nur bei den Betas.

Was ich jedoch in einem Abwicklungssegment bemerkte, war, dass das Suffix "WithUnwindSegue" anstelle von "WithSegue"

war

Auch ich habe ein schnelles 2.3-Projekt verwendet und ein Abwicklungssegment erstellt. Ähnlich wie im obigen Beispiel besteht die Fehlerbehebung darin, das Suffix WithUnwindSegue im Attribut Aktion des Attribut-Inspektors des Segments zu entfernen.

    
iAmcR 15.10.2016 21:58
quelle