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
或覆盖
。