Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
延迟ios后导航到下一个视图控制器_Ios_Swift_Timer_Uiviewcontroller_Selector - Fatal编程技术网

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

延迟ios后导航到下一个视图控制器,ios,swift,timer,uiviewcontroller,selector,Ios,Swift,Timer,Uiviewcontroller,Selector,我想在延迟3秒后导航到下一个视图控制器。发生过,但发生过两次!。这是我的密码 override func viewWillAppear(_ animated: Bool) { let authToken = UserDefaults.standard.object(forKey:"token") as? String ?? "" if (authToken.characters.count == 0) { self.perform(#selector(Cla

我想在延迟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和ViewDidDisplay的不同场景中。这会有什么问题?

使用以下代码加载下一个视图控制器,并在任何需要的地方调用此
loadNextVC
方法(
viewdiload
视图将出现
或任何其他方法)


使用布尔值确保用于推送下一个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)
        }
    }
}

在任何需要的情况下调用此方法。它只会推一次。

您应该输入viewDidLoad和ViewDidDisplay的代码。因为我认为问题可能只存在于该场景定义中。请检查viewDidLoad和ViewDidDisplay中的逻辑,并确保它按预期工作。还要添加viewDidLoad的代码之前我在viewDidLoad中添加了相同的代码,现在viewDidLoad中没有任何内容,因此它可能只推一次,对吗?剩下的唯一一件事就是推迟推?也试过了,结果还是一样。但是当我只是在没有定时器的情况下放置代码时,它就工作了,我认为你犯了一些错误。。否则,上述代码工作正常。。我在我的许多项目中都使用了。。如果你能分享你的整个文件,它会非常完美。。那么我也许可以帮你指出你所犯的错误
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)
        }
    }
}