cellForRowAtIndexPath 中的 Segue 不发送数据

Segue in cellForRowAtIndexPath doesn't send data

在我的 didSelectRowAtIndexPath 中,我尝试设置一些 data,最后做一个 segue

代码看起来像 this:

    func tableView(tableView: UITableView, DidSelectRowAtIndexPath indexPath: NSIndexPath) {

    var cell = tableView.cellForRowAtIndexPath(indexPath)


    otherName = groupIds[indexPath.row] as! String

    otherActualName = groupNames[indexPath.row] as! String

    self.performSegueWithIdentifier("matchToConversation", sender: self)
}

otherNameotherActualName 声明为全局变量。

如果我输入 breakpoints,全局变量就会得到正确的值。如果我不这样做,它就不起作用。我认为我的 Segue 在分配数据之前被触发,因为它们是 PFQuery.

的产物

我尝试使用prepareForSegue函数,但我不知道如何在这里使用它。有什么建议吗?

prepareForSegue 将允许您将这些变量分配给下一个视图控制器。假设您正在推送一个 viewController 并且您想要传递这 2 个参数,您可以通过这种方式使用 prepare for segue。

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?)     
{
  if segue.identifier == "YOUR_SEGUE_IDENTIFIER" {
    let destinationController = segue.destinationViewController as! YourNextViewController
    destinationController.otherName = self.otherName
    destinationController.otherActualName = self.otherActualName
  }
}

如果在调用 tableView(_:didSelectRowAtIndexPath:) 时填充了 groupIdsgroupNames 数组,则传递值应该没有问题。

你需要的是像这样定义你的新视图控制器

class YourNextViewController: UIViewController
{
  var otherName: String? 
  var otherActualName: String?
}

这样你就可以在 prepareForSegue

中传递你的值