【问题标题】:Best Method to present multiple View Controllers? Swift 4呈现多个视图控制器的最佳方法?斯威夫特 4
【发布时间】:2017-08-19 19:57:52
【问题描述】:


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

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

问题是我不确定我实际上将如何使用 segue 进行此操作。我在想一些类似“如果来自 Registervc 的 segue = true,则呈现 WelcomeMessageVC”或类似的东西。 .

我想到的另一个想法是将欢迎消息放在 MainVC 上,但除非与 RegisterVC 分隔,否则将隐藏 - 尽管我想避免这个想法,因为我已经设计并创建了我所有的 vc 并且 WelcomeMessageVC 是一个单独的 VC .

什么是最好/最简单的方法?

另一个想法 - 是否有可能通过使用 Firebase Auth 来做到这一点,例如 if 语句说如果用户刚刚创建,呈现 WelcomeMessageVC,以及现有用户是否呈现 MainVC?

谢谢,
杰里米

【问题讨论】:

  • 一种方法 - 也许不是最好的,还有其他方法 - 让流程保持您拥有的方式 - Auth >> Main 或 Auth >> Register >> Main - 除了将标志传递给Main 将使 it 在其视图上显示一个 Welcome VC。用户浏览 Welcome VC 后,将其关闭,然后您将返回 Main。

标签: ios swift xcode uiviewcontroller segue


【解决方案1】:

创建您的欢迎视图控制器。在 Storyboard 上,创建一个 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)
    }
}

【讨论】:

  • 嗨,很抱歉回复晚了。刚刚开始将我的 UI 连接到代码。我已经对此进行了测试,并且效果很好!谢谢:)
【解决方案2】:

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

多看一些,希望你会喜欢。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-22
    • 2017-03-24
    • 2021-03-14
    • 2017-09-10
    相关资源
    最近更新 更多