选择在 swift 中加载视图的正确方法或事件

Right way or event to choose what view load in swift

我正在开发一个应用程序,如果在启动时没有其他用户登录,则该应用程序会登录一个用户。这样,第一个出现的视图应该是登录视图。但是在已经有登录用户的情况下,出现的第一个视图应该是主菜单。我用 viewWillAppear 函数处理这个问题并且它正在工作,但我不知道这是否是正确的方法或者在这种情况下应该如何处理。

这是我的代码。我的第一个视图是 MainMenuVC,我在其中控制是否有登录用户,然后我选择是留在主菜单视图还是推送我的登录视图。

class MainMenuVC: UIViewController {


override func viewWillAppear(animated: Bool) {
    if (UserMgr.users.count == 0){
        var vc1:LoginVC = self.storyboard?.instantiateViewControllerWithIdentifier("LoginView") as LoginVC
        self.navigationController?.pushViewController(vc1, animated: false)
    }
    else
    {
        //I do nothing so this view is loaded
    }


}

我不知道我是否应该使用另一个 ViewController 并实现函数 loadView() 来决定加载什么视图,但问题是让该视图与故事板和我的导航控制器一起工作。 有什么建议吗?

基本上您将有两种不同的视图控制器,一种用于登录屏幕 (VCLogin),另一种用于主菜单 (VCMainMenu)。现在,在您的 AppDelegate 中,有一些方法会在应用程序出现时分别启动。因此,将检查用户是否登录的代码放在那里,并使适当的视图控制器成为根视图控制器,例如

let navigationController = window.rootViewController as UINavigationController

navigationController.rootViewController =
    userIsLoggedIn ? mainMenuViewController : loginViewController