2016-03-23 11 views
5

Ich habe einen ViewController mit Tabellenansicht namens BasicPhrasesVC und ich möchte die Daten in der ausgewählten Zelle übergeben, um es auf dem nächsten ViewController (namens BasicPhrasesVC) anzuzeigen.Wie verwende ich prepareForSegue in swift?

class BasicPhrasesVC: UIViewController, UITableViewDataSource, UITableViewDelegate { 

let basicPhrases = ["Hello.","Goodbye.","Yes.","No.","I don't understand.","Please?","Thank you.","I don't know."] 
var selectedBasicPhrase = "" 

func numberOfSectionsInTableView(tableView: UITableView) -> Int { 
    return 1 
} 

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    return basicPhrases.count 
} 


func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCellWithIdentifier("Cell")! 
    cell.textLabel?.text = basicPhrases[indexPath.row] 
    return cell 
} 

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 

Ich bin nicht sicher, was hier zu setzen (ich will auf die Variable "selectedBasicPhrase" passieren)

} 

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
    selectedBasicPhrase = basicPhrases[indexPath.row] 
    performSegueWithIdentifier("BasicPhrasesVC2BasicDisplayVC", sender: self) 

} 
} 

Jede Hilfe sehr geschätzt wird.

Antwort

8
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
    selectedBasicPhrase = basicPhrases[indexPath.row] 
    self.performSegueWithIdentifier("BasicPhrasesVC2BasicDisplayVC", sender: selectedBasicPhrase) 

} 

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
     if segue.identifier == "BasicPhrasesVC2BasicDisplayVC" { 
      if let nextVC = segue.destinationViewController as? NextViewController { 
       nextVC.selectedBasicPhrase = sender 
      } 
     } 
    } 
+0

Vielen Dank für diese nützliche Antwort. –

+2

DestinationViewController wurde in Ziel umbenannt. –

0
override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) { 
    if (segue.identifier == "<segue name>") { 
     // pass the data 
    } 
} 
0

prüfen segue Namen als destinationViewController zu nehmen und Sie sind Daten zu versenden.

override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) { 
    if (segue.identifier == "BasicPhrasesVC2BasicDisplayVC") { 
     let viewController:ViewController = segue!.destinationViewController as ViewController 
     viewController.selectedBasicPhrase = "Test phrase" 
    } 
} 
+0

Kein Problem helfen immer gerne –

+0

ich das jetzt haben: 'Überschreibung func prepareForSegue (segue: UIStoryboardSegue, Absender: ANYOBJECT) { if (segue.identifier == "BasicPhrasesVC2BasicDisplayVC") { Lassen Sie ViewController: BasicPhrasesVC = segue.destinationViewController as! BasicDisplayVC viewController.selectedBasicPhrase = basicPhrases [indexPath.row] } } ' mit dem Fehler "Kann nicht Wert vom Typ Convert BasicDisplayVC 'in dem angegebenen Typ 'BasicPhrasesVC'" –

Verwandte Themen