提供多个视图控制器的最佳方法?斯威夫特4

时间:2017-08-19 19:57:52

标签: ios swift xcode uiviewcontroller segue


目前我的想法如下: 当现有用户登录他们的帐户时,他们将从AuthVC中获取 - > MainVC。

如果用户需要注册,则来自AuthVC - > RegisterVC。重新编号后,它们将被带到MainVC 我想要的是在用户注册时在MainVC的顶部呈现另一个VC。所以他们来自ReigsterVC - > MainVC,但在他们可以与ManVC交互之前,新的VC将弹出顶部以显示欢迎消息 这个额外的VC将显示欢迎信息并解释应用程序等。

问题在于,我不确定如何用segue实际做这件事。我正在考虑如下事项:如果来自Registervc = true,那么现在的WelcomeMessageVC'或类似的东西......

我想到的另一个想法是将欢迎消息放在MainVC上,但除非从RegisterVC中被隐藏,否则隐藏 - 虽然我想避免这个想法,因为我已经设计并创建了我的所有vc和WelcomeMessageVC是一个单独的VC。

什么是最好/最简单的工作方式?

另一个想法 - 是否可以通过使用Firebase Auth来执行此操作,例如if语句说明用户是否刚刚创建,是否存在WelcomeMessageVC,以及现有用户是否存在MainVC?

谢谢,
杰里米

2 个答案:

答案 0 :(得分:1)

创建欢迎视图控制器。在故事板上,创建一个segue并命名。

在用户默认值中存储布尔值,以跟踪此人是否看到了欢迎屏幕。

在视图控制器viewWillAppear中:

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear( animated )
    showWelcome()
}


func showWelcome() {
    var wasHereBefore = UserDefaults.standard.bool(forKey: "wasHereBefore")

    // Do we have a value?
    if wasHereBefore == nil {
        wasHereBefore = false
    }
    if wasHereBefore == false {
        // Store the value so this only happens once
        UserDefaults.standard.set(true, forKey: "wasHereBefore")
        performSegue(withIdentifier: "WelcomeSegue", sender: self)
    }
}

答案 1 :(得分:0)

我使用singleton来解决这个问题。如您所愿,MainVC总是被加载,但取决于用户是否登录或需要注册。首先,创建一个启动器类作为单例。并使用该类初始化您的主视图控制器,并在检查用户是否需要登录等并调用该视图之前。一旦完成,将关闭该视图,您的主视图控制器将在那里初始化。甚至根据您的要求进行更改。

进一步了解,我希望你会欣赏它。