如何同步运行功能?

时间:2015-04-09 12:47:09

标签: swift

我有两个功能:

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)

}

所以,当我选择它时,它首先打印为空数组([])给我,稍后它会打印我选择的行。如何将选定的行索引放入数组并打印出来?

3 个答案:

答案 0 :(得分:0)

它们是同步运行的,而不是按照您想要的顺序运行。

为了控制它们的运行顺序,请不要将segue连接到单元格。而是将segue附加到视图控制器并使用标识符命名。

然后在你的didSelectRowAtIndexPath中,使用`performSegueWithIdentifier:sender:'

手动调用你的segue

答案 1 :(得分:0)

你显然已经实现了didSelectRowAtIndexPath以及从细胞中连接了一个segue。问题是两者都被解雇了,但是在调用didSelectRowAtIndexPath之前就开始了segue。

我建议完全删除didSelectRowAtIndexPath,而是将indexPathForSelectedRow逻辑移到prepareForSegue

答案 2 :(得分:0)

  1. 删除将表格单元格连接到第二个视图控制器的segue
  2. 创建另一个将视图控制器连接到第二个的segue,为其指定一个标识符名称(例如“mySegue”)
  3. 向didSelectRowAtIndexPath添加performSegueWithIdentifier调用
  4. 以下是代码:

      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)
        }
    
      }