簡體   English   中英

如何同步運行功能?

[英]How to run functions synchronously?

我有2個功能:

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)

}

因此,當我選擇該行時,它首先為我打印一個空array([]),然后稍后它打印我選擇的那一行。 如何將選定的行索引放入數組並打印?

它們同步運行,只是順序不理想。

為了控制它們的運行順序,請勿將segue附加到單元上。 而是將segue附加到您的視圖控制器,並使用標識符命名。

然后在您的didSelectRowAtIndexPath中,使用`performSegueWithIdentifier:sender:'手動調用您的segue

您顯然已經實現了didSelectRowAtIndexPath ,並且已將單元格連接起來。 問題是兩者都觸發了,但是在調用didSelectRowAtIndexPath之前啟動了segue。

我建議完全刪除didSelectRowAtIndexPath ,然后將indexPathForSelectedRow邏輯移到prepareForSegue

  1. 刪除將Table Cell連接到第二個視圖控制器的序列
  2. 創建另一個將視圖控制器連接到第二個控制器的segue,為其指定一個標識符名稱(例如“ mySegue”)
  3. 將performSegueWithIdentifier調用添加到didSelectRowAtIndexPath

這是代碼:

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

  }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM