Comment pouvez-vous créer un écran d'instructions, qui n'apparaît que la première fois (dans Swift)

Y at-il un moyen simple d'apather un user à un controller de vue une seule fois? Ce ViewController pourrait alors être un écran d'instructions que l'user ne voit qu'une seule fois au démarrage. J'ai ceci maintenant:

let skipScreen = NSUserDefaults.standardUserDefaults() @IBAction func skipButton(sender: AnyObject) { let skipNow = true skipScreen.setObject(skipNow, forKey: "skip") skipScreen.synchronize() } func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject :AnyObject]?) -> Bool { self.window = UIWindow(frame: UIScreen.mainScreen().bounds) var storyboard = UIStoryboard(name: "Main", bundle: nil) var initialViewController = storyboard.instantiateViewControllerWithIdentifier("ViewController") as UIViewController self.window?.rootViewController = initialViewController self.window?.makeKeyAndVisible() } override func viewDidLoad() { super.viewDidLoad() var skipNow: Bool? = skipScreen.objectForKey("skip") as Bool? if skipScreen.boolForKey("skip") == true{ var nav = self.view?.rootViewController as UINavigationController var storyBoard = UIStoryboard(name: "Main", bundle: nil) nav.pushViewController(storyBoard.instantiateViewControllerWithIdentifier("BookingViewController") as BookingViewController, animated: false) } } 

Mais il donne des erreurs avec les parties self.window et dit que viewController n'a pas de membre nommé 'window'

Comment pourrais-je faire ce travail?

Merci!

Ma suggestion pour créer des écrans didacticiels / institutionnels serait de créer des images (en plein écran) avec une couleur d'arrière-plan opacité et du text entièrement visible. Gérez l'affichage avec NSUserDefaults (après avoir affiché un écran, enregistrez-le dans les valeurs par défaut de l'user pour que vous sachiez la prochaine fois que vous ne devriez pas afficher cette image particulière).

Ne pas oublier de créer des images pour tous les écrans (pour iPhone: 4, 5, 6, 6+)

Vous devez vérifier dans la méthode didFinishLaunchingWithOptions de votre appdelegate pour, disons une valeur booleanne dans votre userdefaults, qui indique si vous devez commencer avec un viewcontroller "instructional" ou le viewcontroller normal. Vous pouvez donc définir le viewcontroller instrucitonal comme controller de vue par défaut dans votre storyboard, et vous pouvez appuyer sur le controller de vue "non-didactique" s'il a été affiché.

  if userDefaults.boolForKey("HasBeenShownInstructions") { var nav = self.window?.rootViewController as UINavigationController var storyBoard = UIStoryboard(name: "Main", bundle: nil) nav.pushViewController(storyBoard.instantiateViewControllerWithIdentifier("BookingViewController") as BookingViewController, animated: false) } 

N'oubliez pas d'save la valeur booleanne à userdefaults lorsque l'user a rejeté / terminé les instructions.

Ce n'est que l'une des nombreuses façons de résoudre le problème. Vous pouvez aussi le faire dans l'autre sens. Dépend de ce dont vous avez besoin.