如何在应用程序首次运行期间(例如教程)只显示uiviewcontroller一次?

我正在创建一个iOS swift应用程序,我想在用户第一次运行应用程序时显示教程屏幕。 稍后,随着应用程序的每次运行,教程应该被隐藏,另一个视图控制器应该是可见的起点。 到目前为止,我的故事板看起来像这样:

在此处输入图像描述

它包含两个教程屏幕(第一个和最后一个)和标签栏(这是我的应用程序的主窗口)。

至于现在,在故事板中我选择了标签栏作为初始视图控制器:

在此处输入图像描述

使用这种方法,从未见过教程屏幕。 如何在首次启动应用程序中仅显示一次,然后在每次用户打开应用程序时跳过它?

didFinishLaunchingWithOptions方法中检查NSUserDefaults值就像这样。

 func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: NSDictionary?) -> Bool { let defaults = NSUserDefaults.standardUserDefaults() if defaults.objectForKey("isFirstTime") == nil { defaults.setObject("No", forKey:"isFirstTime") defaults.synchronize() let storyboard = UIStoryboard(name: "main", bundle: nil) //Write your storyboard name let viewController = storyboard.instantiateViewControllerWithIdentifier("ViewController") as! ViewController self.window.rootViewController = viewController self.window.makeKeyAndVisible() } return true } 

注意:我创建了ViewController的对象,您需要在将其分配给rootViewController之后创建FirstPage教程屏幕的对象。

对于swift 4进行这些更改。

 let defaults = UserDefaults.standard if defaults.object(forKey: "isFirstTime") == nil { defaults.set("No", forKey:"isFirstTime") defaults.synchronize() ... } 

简化了Swift 4版本的这个答案。

https://stackoverflow.com/a/39353299/1565913

 func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: NSDictionary?) -> Bool { if !UserDefaults.standard.bool(forKey: "didSee") { UserDefaults.standard.set(true, forKey: "didSee") let storyboard = UIStoryboard(name: "Main", bundle: nil) let viewController = storyboard.instantiateViewController(withIdentifier: "YourViewController") self.window?.rootViewController = viewController self.window?.makeKeyAndVisible() } return true }