Swift 延迟问题

标签 swift xcode delay

所以我一直致力于创建一个应用程序,如果您按下按钮,它就会触发startGame。然后,这应该等待我在更改每个图像之前创建的延迟。延迟是有效的,但它们是在我启动应用程序时立即开始的,而不是在我按下按钮时开始的。从那以后我一直在努力修复它。有什么建议吗?

感谢您的帮助!

这是我认为更重要的代码:

let deadlineTime = DispatchTime.now() + .seconds(1)
let deadlineTime2 = DispatchTime.now() + .seconds(2)
let deadlineTime3 = DispatchTime.now() + .seconds(3)
let deadlineTime4 = DispatchTime.now() + .seconds(4)

@IBAction func startGame(_ sender: AnyObject) {

        trumpImage.isHidden = false

        DispatchQueue.main.asyncAfter(deadline: deadlineTime) {

            self.trumpImage.image = UIImage(named: "trumpTurnOne")

        }

        DispatchQueue.main.asyncAfter(deadline: deadlineTime2) {

            self.trumpImage.image = UIImage(named: "trumpTurnTwo")

        }

        DispatchQueue.main.asyncAfter(deadline: deadlineTime3) {

            self.trumpImage.image = UIImage(named: "trumpTurnThree")

        }

        DispatchQueue.main.asyncAfter(deadline: deadlineTime4) {

                self.runGame()

        }

}

最佳答案

试试这个:

let deadlineTime = {return DispatchTime.now() + .seconds(1)}
let deadlineTime2 = {return DispatchTime.now() + .seconds(2)}
let deadlineTime3 = {return DispatchTime.now() + .seconds(3)}
let deadlineTime4 = {return DispatchTime.now() + .seconds(4)}

如果您已将四个 DispatchTime 声明为实例属性,则初始值的计算将在实例生成时进行,而不是在实际使用这些属性时进行。这意味着 DispatchTime.now() 代表实例化的时间,它可能远远早于用户按下按钮的时间。

因此,要使 DispatchTime.now() 表示按下按钮的时间,您可能需要将它们设置为计算属性。否则,您需要将它们设为局部变量。

@IBAction func startGame(_ sender: AnyObject) {
    let deadlineTime = DispatchTime.now() + .seconds(1)
    let deadlineTime2 = DispatchTime.now() + .seconds(2)
    let deadlineTime3 = DispatchTime.now() + .seconds(3)
    let deadlineTime4 = DispatchTime.now() + .seconds(4)

    //...
}

关于Swift 延迟问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39853828/

相关文章:

swift - RxSwift : What is the usage difference between BehaviorSubject and BehaviorRelay?

ios - 如何以编程方式制作可重用的 UILabel 和 UITextField

redis - celery 任务不工作

javascript - .delay() 仅适用于第一个动画

xcode - 调用中的额外参数 'delay'

javascript - jQuery 循环,同时延迟更新 HTML

ios - 通过操作以编程方式快速将按钮添加到 View 中

ios - Swift 中的电子邮件和电话验证

ios - Xcode在索引新的开发人员设备时在做什么?

iphone - 从 UItableViewCell 调用 View