【问题标题】:How to make a view controller only appear the first time a user opens the app in swift如何使视图控制器仅在用户第一次快速打开应用程序时出现
【发布时间】:2020-09-15 19:32:24
【问题描述】:

我有两个问题。

如何检测用户第一次打开我的应用的时间。

如何以编程方式更改初始视图控制器,使其在用户第一次打开应用程序时打开“教程”视图控制器,并在用户打开应用程序的所有其他时间打开“主页”视图控制器。

我已经创建了我的故事板,我看到了必须删除整个故事板的解决方案,但我不想这样做,因为它会删除我以前的所有作品。如果存在不删除整个情节提要或删除情节提要而不删除视图控制器内的内容的解决方案,这也是可以接受的。

感谢您的帮助。

【问题讨论】:

  • 第一部分,检查用户默认是否包含已知键,例如“tutorialShown”。如果没有这样的密钥,请显示您的教程并将密钥放入用户默认值中。其次,将教程显示为家庭控制器上的模式显示可能是最简单的。

标签: ios swift xcode viewcontroller


【解决方案1】:

在这种情况下我通常会做什么:

  • 创建看起来像您的启动屏幕的初始屏幕,并在 viewDidAppear 中确定是否应显示其他屏幕上的载入
  • 模态显示此屏幕
  • 使用.plist 适合存储Bool 值,该值表示应用程序是否已启动或载入完成

【讨论】:

    【解决方案2】:

    您必须通过代码而不是界面构建器来完成此操作。

    您在您的应用委托中执行此操作:

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
            
            let seenTutorial = UserDefaults.standard.bool(forKey: "SEEN-TUTORIAL")
            let rootViewController = seenTutorial ? UIViewController() : UITutorialViewController()
            let bounds = UIScreen.main.bounds
            self.window = UIWindow(frame: bounds)
            self.window?.rootViewController = rootViewController
            self.window?.makeKeyAndVisible()
    
            return true
        }
    

    只要您觉得这是一个更新的好地方,就在教程控制器中更新您的 UserDefaults:

    UserDefaults.standard.set(true, forKey: "SEEN-TUTORIAL")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-11
      • 2016-12-03
      • 1970-01-01
      • 2020-09-20
      • 2021-02-08
      相关资源
      最近更新 更多