在cellForRowAtIndexPath中查看并不发送数据

时间:2016-01-12 14:18:37

标签: ios swift uistoryboardsegue didselectrowatindexpath

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

代码看起来像这个

    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功能,但我不确定如何在此处使用它。任何建议?

1 个答案:

答案 0 :(得分:1)

prepareForSegue可让您将这些变量分配给下一个视图控制器。让我们说你正在推动viewController而你想通过这两个参数,你可以用这种方式准备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
  }
}

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

您需要的是如此定义新的视图控制器

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

这样您就可以在prepareForSegue

中传递您的值