Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何使视图控制器仅在用户第一次在swift中打开应用程序时出现_Ios_Swift_Xcode_Viewcontroller - Fatal编程技术网

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

Ios 如何使视图控制器仅在用户第一次在swift中打开应用程序时出现,ios,swift,xcode,viewcontroller,Ios,Swift,Xcode,Viewcontroller,我有两个问题 如何检测用户何时首次打开我的应用程序 及 如何以编程方式更改初始视图控制器,使其在用户首次打开应用程序时打开“教程”视图控制器,并在用户打开应用程序的所有其他时间打开“主页”视图控制器 我已经创建了我的故事板,我见过一些解决方案,其中一个必须删除整个故事板,但我不想这样做,因为它将删除我以前的所有工作。如果存在不删除整个情节提要或删除情节提要而不删除视图控制器内的内容的解决方案,这也是可以接受的 谢谢您的帮助。在这种情况下我通常会做什么: 创建与启动屏幕相似的初始屏幕,并在vie

我有两个问题

如何检测用户何时首次打开我的应用程序

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

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


谢谢您的帮助。

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

  • 创建与启动屏幕相似的初始屏幕,并在
    viewDidAppear
    中确定是否应在其他屏幕上显示启动屏幕
  • 以模式显示此屏幕
  • 使用
    .plist
    适用于存储一个
    Bool
    值,该值表示应用程序是否已启动或已完成上线

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

您可以在应用程序代理中执行此操作:

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.standard.set(true, forKey: "SEEN-TUTORIAL")

对于第一部分,检查用户默认值以查看它是否包含已知的密钥,例如“tutorialShown”。如果没有这样的键,请显示教程并将该键设置为用户默认值。对于第二种情况,最简单的方法可能是在家庭控制器上以模式显示教程。