2016-03-23 4 views
5

У меня есть ViewController с табличным представлением BasicPhrasesVC, и я хочу передать данные в выбранной ячейке, чтобы отобразить их на следующем ViewController (называемом BasicPhrasesVC).Как использовать prepareForSegue в 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?) { 

Я не уверен, что поставить здесь (я хочу передать переменную «selectedBasicPhrase»)

} 

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

} 
} 

Любая помощь приветствуется.

ответ

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

Спасибо за этот полезный ответ. –

+2

destinationViewController был переименован в пункт назначения. –

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

Проверить имя Segue, чем взять destinationViewController и отправить вы будете на него данные.

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

Нет проблем всегда рады помочь –

+0

теперь у меня есть это: 'переопределение функ prepareForSegue (SEGUE: UIStoryboardSegue, отправитель: AnyObject) { если (segue.identifier == "BasicPhrasesVC2BasicDisplayVC") { let viewController: BasicPhasesVC = segue.destinationViewController as! BasicDisplayVC viewController.selectedBasicPhrase = basicPhrases [indexPath.row] } } ' с ошибкой "Не удается преобразовать значение типа 'BasicDisplayVC' для указанного типа '' BasicPhrasesVC" –

Смежные вопросы