2017-02-04 76 views
0
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {   
    let cellText: String 

    //need this to give the category which is clicked to the main view controller 
    // so its sends the data from one tableview to the other 
    let categories = cat[indexPath.row] 
    cellText = categories.cat! 
    let choosenCategory = cellText 
    self.performSegue(withIdentifier: "goToTableView", sender: choosenCategory) 
    let user = "Anton" 
    self.performSegue(withIdentifier: "goToTableView", sender: user) 
} 

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    if (segue.identifier == "goToTableView") 
    { 
     let destination = segue.destination as? ViewController 

     destination?.passedData = sender as? String 
     print("open second one") 
     destination?.passedUser = sender as? String 
     print("Sender Vlaue: \(sender)") 
    } 
} 

嘿!
我需要一些帮助。我想在我的tableviewcontroller之间传递数据。在Swift3中传递数据

我的问题是,当我通过这两个数据之间的数据打开它两次。所以起初它加载ControllerpassedData和之后与passedUser

我在做什么错?

回答

0

你的问题是你打电话performSegue(withIdentifier:sender:)两次。每个调用都会创建一个新的目标viewController。您需要在一次通话中传递您的设置数据。

一种选择是更新viewController中的属性以保存值而不是以sender发送数据。

另一种方法是创建一个结构来保存值。如果你有各种类型的变量,这将工作得很好。

既然你只有两个数据,他们都是String,你可以把它们放入[String]

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {   
    let cellText: String 

    //need this to give the category which is clicked to the main view controller 
    // so its sends the data from one tableview to the other 
    let categories = cat[indexPath.row] 
    cellText = categories.cat! 
    let choosenCategory = cellText 
    let user = "Anton" 
    self.performSegue(withIdentifier: "goToTableView", sender: [chosenCategory, user]) 
} 

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    if segue.identifier == "goToTableView" 
    { 
     guard let destination = segue.destination as? ViewController else { return } 
     guard let info = sender as? [String] else { return } 

     destination.passedData = info[0] 
     destination.passedUser = info[1] 
     print("Sender Value: \(sender)") 
    } 
} 
+0

好吗谢谢。我已经认为这是这样的! 干杯! –