延迟iOS后导航到下一个视图控制器



我想在延迟3秒后导航到下一个视图控制器。它发生了,但是发生了两次!这是我的代码。

override func viewWillAppear(_ animated: Bool) {
    let authToken =  UserDefaults.standard.object(forKey:"token") as? String ?? ""

    if (authToken.characters.count == 0) {
        self.perform(#selector(ClassName.navigateToMobileScreen), with: nil, afterDelay: 3)
    }
}

我在不同的情况下将其放在ViewDidload和ViewDidappear中。这有什么问题?

使用以下代码加载下一个视图控制器,并从您想要的任何地方调用此loadNextVC方法(viewDidLoadviewWillAppear或任何其他方法(

func loadNextVC() {
    DispatchQueue.main.asyncAfter(deadline: .now() + 3.0) {
    // Code to push/present new view controller
    }
}

使用布尔值来确保您的代码按下下一个ViewController只能推一次。

var isNextVcPushed = false
func pushNextVc() {
    let authToken =  UserDefaults.standard.object(forKey:"token") as? String ?? ""
    if (authToken.characters.count == 0) {
        if !isNextVcPushed {
            isNextVcPushed = true
            self.perform(#selector(ClassName.navigateToMobileScreen), with: nil, afterDelay: 3)
        }
    }
}

在您需要的每种情况下调用此方法。它只会推一次。

最新更新