Segue在前面的代码之前执行

时间:2015-06-04 22:36:17

标签: ios swift segue

我有一个条形按钮,我创建了一个IBAction,它将一组数据保存到服务器,然后将用户返回到3个数据输入屏幕中的第一个。在我当前的代码中,我使用延迟函数来模拟保存到服务器,因为我还没有准备好这个项目,但是我需要说明它在完成时的外观。

总的来说,对于发展很新,我相信我只是错过了一步,但我不知道是什么。在我引入performSegueWithIdentifier步骤之前,此代码完全按预期执行。也就是说,当点击“保存”按钮时,活动指示器开始动画,代码暂停4.0秒,然后活动指示器停止动画。当我添加performSegueWithIdentifier步骤并点击按钮时,会立即执行segue。

非常感谢您的协助。

@IBAction func saveDTrans(sender: UIBarButtonItem) {
// here is where data is saaved to server
    appIsWorking ()
    delay(4.0){
        self.activityIndicator.stopAnimating()
        UIApplication.sharedApplication().endIgnoringInteractionEvents()
        self.performSegueWithIdentifier("returnToDispenseScreenOne", sender: self)  //use this code to perform segue
    }
}

2 个答案:

答案 0 :(得分:0)

如果你想在segue执行之前运行一些代码,那么试试

override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) { if (segue.identifier == "Your Segue name") { // Your code that will run before segue execution } }

答案 1 :(得分:0)

您可以使用NSTimer

而不是延迟
NSTimer.scheduledTimerWithTimeInterval(4.0, target: self, selector: Selector("goToNextScreen:"), userInfo: nil, repeats: false)

所以,在你的代码中:

@IBAction func saveDTrans(sender: UIBarButtonItem) {
// here is where data is saaved to server
    appIsWorking ()

    // Run function goToNextScreen(_:) 4 seconds later
    NSTimer.scheduledTimerWithTimeInterval(4.0, target: self, selector: Selector("goToNextScreen:"), userInfo: nil, repeats: false)
}

func goToNextScreen(sender: AnyObject) {
    self.activityIndicator.stopAnimating()
    UIApplication.sharedApplication().endIgnoringInteractionEvents()
    self.performSegueWithIdentifier("returnToDispenseScreenOne", sender: self)
}