我的最终目标是在传递变量时转到另一个 View Controller 。
这是我的代码:
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let name : String=arrDict[indexPath.row].valueForKey("name") as! String
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {
if segue.identifier == "SecondSegue" {
let viewController = segue.destinationViewController as! SecondViewController
viewController.passedVariable = name
}
}
如您所见,我正在尝试将变量 name
传递给函数 prepareForSegue
。正如我所说,我的最终目标是将一个变量传递给另一个 View Controller 并打开该 View 。
现在,prepareForSegue 可以做到这一点,但我只需要传递变量。也许有一种方法可以直接在 func tableView
中执行此操作?
最佳答案
var name: String?
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
name = arrDict[indexPath.row].valueForKey("name") as? String
performSegueWithIdentifier("SecondSegue", sender: nil)
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {
if let viewController = segue.destinationViewController as? SecondViewController {
if name != nil {
viewController.passedVariable = name!
} else {
print("failed to get name from dictionary")
}
}
}
我相信这就是您要找的。不要在 cellForRowAtIndexPath 中分配变量名,因为此函数通常在 tableView 的整个生命周期中被多次调用。此外,“名称”需要是一个类变量,以便您可以在一个函数中分配它并在另一个函数中传递它。 cellForRowAtIndexPath 是一个函数,用于分配 tableView 的每个单元格的值和 UI。很少有人用它做任何其他事情。
关于ios - 将变量从 tableView 传递到 prepareForSegue?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38537209/