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)
}
otherName
和 otherActualName
声明为全局变量。
如果我输入 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:)
时填充了 groupIds
和 groupNames
数组,则传递值应该没有问题。
你需要的是像这样定义你的新视图控制器
class YourNextViewController: UIViewController
{
var otherName: String?
var otherActualName: String?
}
这样你就可以在 prepareForSegue
中传递你的值
在我的 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)
}
otherName
和 otherActualName
声明为全局变量。
如果我输入 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:)
时填充了 groupIds
和 groupNames
数组,则传递值应该没有问题。
你需要的是像这样定义你的新视图控制器
class YourNextViewController: UIViewController
{
var otherName: String?
var otherActualName: String?
}
这样你就可以在 prepareForSegue