2016-05-28 3 views
0

Ich habe einen Haupt TableViewController. Wenn der Benutzer in TableView auf eine Zelle klickt, zeigt eine gültige Bedingungsanweisung den Haupt-TableViewController erneut an (zeigt aber andere Daten auf dem Bildschirm an), und wenn die Bedingung falsch ist, zeigen Sie einen anderen ViewController an. Im prepareForSegue Methode Ich habe diese:Wie führe ich ein segue auf sich ODER einen anderen viewController

if segue.identifier == "identifier1" 
{ 
    let destination = segue.destinationViewController as? mainViewController // itself 
    destination!.x = something // the x variable is in this view controller 
} 
else if segue.identifier == "identifier2" 
{ 
    let destination = segue.destinationViewController as? viewController2 
    destination!.y = something 
} 

Auch segue nach Hahn auf Zellen in tableview ich diese hinzugefügt auszuführen:

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
    tableView.deselectRowAtIndexPath(indexPath, animated: true) 

    if condition is true { 
     self.performSegueWithIdentifier("identifier1", sender: self) 
    } 
    else{ 
     self.performSegueWithIdentifier("identifier2", sender: self) 
    } 
} 

Storyboard segue benötigt eine Kennung ... Es kann einfach haben ein Wert! Bezeichner1 oder Bezeichner2 Aber ich möchte die Kennung programmgesteuert festlegen. Wie soll ich den Bezeichner in Storyboard-Überleitung setzen? Gibt es einen anderen Weg, dies zu tun? Danke!

Antwort

0

Rufen Sie kein Segment direkt vom Zellenabgriff auf. Verwenden Sie eine IBAction Methode (wahrscheinlich in `DidSelectRowAtIndexPath, wie Sie in dem zweiten Codeblock zeigen.

Die zweite Codeblock programmatisch die Segue Kennung gesetzt DOES.

Sie können nicht einschalten segues in prepareForSegue.

1

die Steuerung Zielansicht wird durch die segue eingestellt. Da Sie zwei verschiedene Ziele haben, können Sie zwei verschiedene segues in Ihrem Storyboard benötigen.

der Trick an der Spitze des Tableviewcontroller die segues aus dem Viewcontroller-Symbol zu verdrahten ist jedes der Ziele View-Controller. Klicken Sie auf die resultierenden Segmentpfeile und legen Sie ihre Bezeichner in dem Attribute Inspector fest.

wire segue in Storyboard

Dann können Sie sie mit performSegueWithIdentifier nennen, wie Sie in Ihrem Code getan haben.

Verwandte Themen