单击按钮时 UIViewController 设置新的根视图

UIViewController setting new root view when click button

我有一个按钮的代码,单击该按钮会将用户带到主页,这是一个我命名为 'HomePageViewController' 的 UIViewController,我还设置了 class,如下所示: class set up.

按钮代码位于名为 'SignInViewController' 的第一个(初始控制器)UIViewController 中,单击时我希望 HomePageViewController 替换 SignInViewController:

  @IBAction func btnSignInPressed(_ sender: UIButton) {
        // if true take to home page
        DispatchQueue.main.async {
            let home = self.storyboard?.instantiateViewController(identifier: "HomePageViewController") as!
            HomePageViewController
            
            // replace the homepage as the root page
            let appDelegate = UIApplication.shared.delegate
            appDelegate?.window??.rootViewController = home
        }
    }

但是,当我 运行 在刺激器中使用此按钮时,当我单击它时,该按钮没有任何作用。请注意,我使用的是标签栏控制器,所以我尝试将根设置为 UIBarController,但这也没有用。

在您的 appDelegate 中,添加 属性:

final var window: UIWindow?

这样称呼它

@IBAction func btnSignInPressed(_ sender: UIButton) {
    // if true take to home page
    DispatchQueue.main.async {
        let home = self.storyboard?.instantiateViewController(identifier: "HomePageViewController") as!
            HomePageViewController

        let window = UIApplication.shared.delegate!.window!!
        window.rootViewController = nil
        window.rootViewController = home
        
        UIView.transition(with: window, duration: 0.4, options: [.transitionCrossDissolve], animations: nil, completion: nil)
    }
}