如何在 Swift 中的 IF 语句中设置时间延迟?

How can I put a time delay within an IF statement in Swift?

我正在为我在大学的计算机课程开发 iOS 应用程序的原型,我用它来证明导航和登录系统功能。到目前为止,我在这方面取得了成功,一切都按计划进行,尽管我怀疑我是否以正确的方式完成了它,因为我对 Swift 编程语言和 XCode IDE.

我的问题是,我知道这听起来很愚蠢,因为我的应用程序不允许我在转换到新视图之前有时间延迟。登录成功后,它立即过渡到我的主页。但是,我希望应用程序在成功登录和打开主页之间有一个短暂的延迟。

我在搜索不同的方法后试了一下,目前的方法是 sleep(UInt32(1.0)) 在打开主页之前暂停应用程序 1 秒 - 本节的完整代码如下:

// external if statement for when login succeeds
if authenticationDidSucceed {
    Text("Login succeeded!")
        .font(.headline)
        .frame(width: 250, height: 80)
        .background(Color.green)
        .cornerRadius(20.0)
        .foregroundColor(.white)
        .animation(Animation.default)
            
    // this is what's broken
    sleep(UInt32(1.0))
    // calling navigation bar containing other pages
    HostingTabBar()
}

这似乎是 return 错误 Static method 'buildBlock' requires that 'UInt32' conform to 'View',我认为这与它在 if 语句中的事实有关。

如果有人知道解决此问题的任何方法,我们将不胜感激,如果您需要我附加更多代码片段或任何内容,请告诉我。

非常感谢您的帮助。

采纳aheze的代码建议,将其添加到我的程序中合适的位置,成功了,现在应用程序在成功登录后暂停了一秒钟。这并不完全符合我的需要,因为成功的登录消息现在根本没有出现,可能是由于时间延迟,但我相信我可以解决这个问题,因为它看起来很简单!

aheze的代码插入到我的程序中:

if self.username == storedUsername && self.password == storedPassword {
    
    DispatchQueue.main.asyncAfter(deadline: .now() + 1.0) {
    
    self.authenticationDidSucceed = true
}

再次感谢您的帮助,希望我做对了!