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 立即转到下一个ViewController?_Ios_Swift - Fatal编程技术网

Ios 立即转到下一个ViewController?

Ios 立即转到下一个ViewController?,ios,swift,Ios,Swift,我在登录视图控制器后导航到LoadUserDataViewController,加载一些用户数据,然后自动转到HomeViewController。现在,只有当我使用按钮时,它才起作用 class LoadUserDataViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() //this doesn't t

我在登录视图控制器后导航到
LoadUserDataViewController
,加载一些用户数据,然后自动转到
HomeViewController
。现在,只有当我使用按钮时,它才起作用

class LoadUserDataViewController: UIViewController {

    override func viewDidLoad() {
        
        super.viewDidLoad()
        
       //this doesn't transition to the Home View Controller
        transitionToHome()
  
    }

    //this does transition to the home view controller
    @IBAction func gotoNextVCButton(_ sender: Any) {
        
        transitionToHome()
        
    }
    
    func transitionToHome() {
        
        let homeViewController = storyboard?.instantiateViewController(identifier: Constants.Storyboard.homeViewController) as? HomeViewController
        view.window?.rootViewController = homeViewController
        view.window?.makeKeyAndVisible()
        
    }
    
}

尝试在
viewdide
中执行
transitionhome

class LoadUserDataViewController: UIViewController {
//...
    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        transitionToHome()
    }
}
或者,您可以提供延迟:

class LoadUserDataViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        perform(#selector(transitionToHome), with: self, afterDelay: 0.5)
    }
    @objc func transitionToHome() {
        //...
    }
}

问题是
viewDidLoad
太早了。您需要等待,直到出现
viewdid
。但是,如果目标是完全跳过登录视图控制器(因为用户已经登录),那么就不是这样做的。您不应该像这样肆意更改根视图控制器。您是否尝试过
[自我呈现视图控制器:homeViewController…]
而不是玩rootVC?哇!我在同一时间写的,伙计。谢谢你,这很有效。我从来不知道您可以完全删除
viewDidLoad
,因此我无法正确使用
viewDidAppear
覆盖