it-swarm.com.de

Xcode, wo die Segmentkennung zugewiesen werden soll

Verzeihen Sie mich für die Anfängerfrage ... Ich weiß, dass ich zu einem anderen Bildschirm (ViewController) wie diesem wechseln kann

self.performSegueWithIdentifier ("SecondViewController", sender: self)

aber ich finde nicht, wo ich meinem zweiten Bildschirm die ID zuweisen kann. Ich finde nur die Storyboard-ID. Ist es das? 

Ich habe es schon probiert, nur einen Absturz mit folgendem Fehler erhalten: 

Receiver () hat kein Segment mit Bezeichner 'SecondViewController'

Irgendeine Idee? Vielen Dank

8

Segue Identifier ist nicht dasselbe wie Storyboard-ID , Storyboard-ID, die verwendet wird, wenn Sie möchten einen View Controller erstellen, der auf diesem bestimmten Storyboard basiert. Dieser muss im Gegensatz zur Segue-ID eindeutig sein.

Wenn Sie bereits wissen, wie man eine Überblendung erstellt, können Sie diesen Teil überspringen.

Hinzufügen eines Segues zwischen zwei viewControllern:

Drücken Sie im Interface Builder die Taste ctrl und ziehen Sie zwischen den beiden Ansichts-Controllern, die Sie verknüpfen möchten (stellen Sie sicher, dass Sie vom Ansichts-Controller selbst ziehen, nicht von der Hauptansicht). Das solltest du sehen:

enter image description here

Wählen Sie die "Show" -zum Beispiel-, die Ausgabe sollte so aussehen:

enter image description here

Wie oben gezeigt, ist der Pfeil, der von dem roten Rechteck umgeben ist, der Übergang.

Zusätzlicher Hinweis: Wenn Sie die Option "Anzeigen" ausgewählt haben, müssen Sie Ihren ersten Ansichtscontroller in einen Navigationscontroller einbetten (wählen Sie Ihren ersten Ansichtscontroller -> Editor -> Einbetten in -> aus Navigation Controller) sollte die Ausgabe wie folgt aussehen:

enter image description here

Weil "Show" bedeutet, in einen Navigations-Controller-Stack zu stecken.

Zuweisen eines Bezeichners für die Übergabe:

Wählen Sie die Segue aus, im Attributinspektor sehen Sie das Textfeld "Identifier", das war's! Stellen Sie sicher, dass Sie genau den Namen eingeben, der in performSegueWithIdentifier verwendet wurde.

Wenn Sie nicht wissen, wo Sie den Attributinspektor finden, sieht er oben rechts folgendermaßen aus:

enter image description here


Außerdem:

Gehen Sie zum Hinzufügen mehrerer Segmente von einem View Controller wie folgt vor (ctrl + Ziehen Sie vom ersten Controller zum anderen (siehe Controller), die Ausgabe sollte wie folgt aussehen:

enter image description here

In diesem Fall könnten Sie auf das Problem stoßen, zu erkennen, welche Segue ausgeführt wurde. Überschreiben prepare(for:sender:) Methode ist die Lösung. Sie können die Überprüfung basierend auf der Eigenschaft segue identifier durchführen:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if (segue.identifier == "firstSegueIdentifier") {
        // ...
    } else if (segue.identifier == "secondSegueIdentifier") {
        //...
    }
}

dies wäre der Name, den Sie der Leiste im Storyboard hinzugefügt haben.

21
Ahmad F

In deinem Code 

self.performSegueWithIdentifier ("SecondViewController", sender: self)

die Zeichenfolge "SecondViewController" sieht aus wie eine Storyboard-ID. An derselben Stelle müssen Sie die Segmentkennung eingeben, nicht die Storyboard-ID.

Folgen Sie dem Screenshot und weisen Sie den Namen der Segmentkennung zu, indem Sie im rechten oberen Leistenfeld auf das Segment klicken. Das kannst du so machen 

self.performSegueWithIdentifier ("WriteSegueIdentifierName", sender: self)

 enter image description here

1
Harish

Sie können viewController folgendermaßen starten: 

let viewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "Login")
self.present(viewController, animated: false, completion: nil)
0
Abuzar Manzoor

Wenn Sie einen View-Controller mit einem anderen View-Controller im Storyboard verknüpfen, müssen Sie in der Verknüpfung zwischen ihnen eine Segmentkennung zuweisen, d. H. "SecondViewController". Nur dann funktioniert Ihr Code.

Alternativ können Sie einen anderen Ansichtscontroller auch über die Storyboard-ID anzeigen, indem Sie self.storyboard.instantiateViewControllerWithIdentifier ("// Storyboard-ID dieses Ansichtscontrollers") verwenden, und dann entweder den aktuellen/show-Viewcontroller verwenden.

0
Bhavuk Jain