2016-03-23 18 views
5

Ho un ViewController con tableview denominato BasicPhrasesVC e voglio passare i dati nella cella selezionata per visualizzarlo sul prossimo ViewController (chiamato BasicPhrasesVC).Come si usa 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?) { 

Io sono sicuro di cosa mettere qui (voglio passare sulla variabile "selectedBasicPhrase")

} 

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

} 
} 

Ogni aiuto è apprezzato.

risposta

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

Grazie per questa risposta utile. –

+2

destinationViewController è stato rinominato a destinazione. –

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

Controllare il nome del seguito che prendere destinationViewController e inviare i dati ad esso.

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

Nessun problema sempre felice di aiutarvi –

+0

ora ho questo: 'esclusione func prepareForSegue (segue: UIStoryboardSegue, mittente:? ANYOBJECT) { se (segue.identifier == "BasicPhrasesVC2BasicDisplayVC") { lascia viewController: BasicPhrasesVC = follows.destinationViewController as! BasicDisplayVC viewController.selectedBasicPhrase = basicPhrases [indexPath.row] }} ' Con l'errore "Impossibile convertire il valore di tipo 'BasicDisplayVC' di tipo specificato 'BasicPhrasesVC'" –