我有两个功能:
var path = [Int]()
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
var selectedRow = tableView.indexPathForSelectedRow()!.row
path.append(selectedRow)
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
var secondController: SecondViewController = segue.destinationViewController as SecondViewController
println(path)
}
所以,当我选择它时,它首先打印为空数组([])给我,稍后它会打印我选择的行。如何将选定的行索引放入数组并打印出来?
答案 0 :(得分:0)
它们是同步运行的,而不是按照您想要的顺序运行。
为了控制它们的运行顺序,请不要将segue连接到单元格。而是将segue附加到视图控制器并使用标识符命名。
然后在你的didSelectRowAtIndexPath中,使用`performSegueWithIdentifier:sender:'
手动调用你的segue答案 1 :(得分:0)
你显然已经实现了didSelectRowAtIndexPath
以及从细胞中连接了一个segue。问题是两者都被解雇了,但是在调用didSelectRowAtIndexPath
之前就开始了segue。
我建议完全删除didSelectRowAtIndexPath
,而是将indexPathForSelectedRow
逻辑移到prepareForSegue
。
答案 2 :(得分:0)
以下是代码:
var path = [Int]()
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
var selectedRow = tableView.indexPathForSelectedRow()!.row
path.append(selectedRow)
self.performSegueWithIdentifier("mySegue", sender: self)
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if (segue.identifier == "mySegue") {
var secondController: SecondViewController = segue.destinationViewController as SecondViewController
println(path)
}
}