2016-04-12 12 views
0

Ich habe einen View-Controller und einen Table View-Controller. Ich gehe von VC One zu VCTable. Auf VCTable, wähle ich eine (Zelle) Daten vom Typ String, die ich in Wert speichern. Wenn ich eine Zelle drücke, möchte ich diese Daten an VC One zurücksenden. und in Schaltfläche oder Label anzeigen.Zurückgeben von Informationen mit View-Controllern

Wie geht das mit Storyboards?

+0

Wie zeigen Sie VC Zwei? Von VC One? Bedeutet VC Two VCTable? – Khuong

+0

Entschuldigung, ja .Von VC One – Shadow

+0

Ok, ich werde Ihnen eine einfache Art und Weise zeigen :) – Khuong

Antwort

0

Erste Lösung: Mit Callback

In Ihrem vcone:

@IBAction func goToViewController2(sender: AnyObject) { 
     let vc2 = storyboard?.instantiateViewControllerWithIdentifier("ViewController2") as! ViewController2 
     vc2.callback = ({ string in 
      self.myString = string 
     }) 
     presentViewController(vc2, animated: true, completion: nil) 
    } 

in Ihrem VCTable:

einen Callback-Variable erstellen:

var callback: ((String) -> Void)? 

in Ihrer didSelectRowAtIndexPath Methode, es zu vcone sendet von:

callback?(textField.text!) 

Zweiter Lösung: Verwenden von Referenz

@IBAction func goToViewController2(sender: AnyObject) { 
     let vc2 = storyboard?.instantiateViewControllerWithIdentifier("ViewController2") as! ViewController2 
     vc2.vc1 = self 
     presentViewController(vc2, animated: true, completion: nil) 
    } 

in Ihrem VCTable:

diese Variable erstellen:

var vc1: ViewController? 

in Ihrem didSelectRowAtIndexPath Methode, senden Sie es an vcone von:

vc1?.myString = textField.text! 

Dritte Lösung: Unter Verwendung Delegierten siehe Link als @Andre Slotta sagte.

FourthSolution: Verwenden von CenterNotification Googeln für dieses :).

Hoffe diese Hilfe :)

+0

Was halten Sie für einen besseren Weg? – Shadow

+0

Es gibt keinen besseren Weg hier, Sie können einen auswählen, wenn Sie es leicht für Sie fühlen. – Khuong