如何使视图控制器仅在用户第一次快速打开应用程序时出现

Posted

技术标签:

【中文标题】如何使视图控制器仅在用户第一次快速打开应用程序时出现【英文标题】: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”。如果没有这样的密钥,请显示您的教程并将密钥放入用户默认值中。其次,将教程显示为家庭控制器上的模式显示可能是最简单的。 【参考方案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")

【讨论】:

以上是关于如何使视图控制器仅在用户第一次快速打开应用程序时出现的主要内容,如果未能解决你的问题,请参考以下文章

如何仅在第一次启动时打开视图控制器

仅在完成操作IOS Swift 3后才使用户访问视图[关闭]

Swift:如何使滚动视图执行子视图控制器 viewDidLoad

视图控制器仅在第一次正确加载图像

UIImage 仅在选择单元格时出现在表格视图单元格中

如何仅在第一次启动 IOS Swift 时显示页面控制器