[英]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
。
這是代碼:
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.