在我的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)
}
otherName
和otherActualName
被声明为全局变量。
如果我放breakpoints
全局变量正在获得正确的值。如果我不这样做也不行。我认为我的Segue是在分配数据之前触发的,因为它们是PFQuery
的产品。
我尝试使用prepareForSegue
功能,但我不确定如何在此处使用它。任何建议?
答案 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
时填充了groupNames
和tableView(_:didSelectRowAtIndexPath:)
数组,则应该传递这些值没有问题。
您需要的是如此定义新的视图控制器
class YourNextViewController: UIViewController
{
var otherName: String?
var otherActualName: String?
}
这样您就可以在prepareForSegue