你如何创build一个只在第一次出现的教学屏幕(在Swift中)
我有一个简单的方法来将用户路由到视图控制器只有一次? 这个ViewController可以成为用户在启动时只看到一次的指导性屏幕。 我现在有这个:
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) } }
但它给self.window
部分的错误,并说viewController没有名为“窗口”的成员
我怎么能做这个工作?
谢谢!
我build议创build教程/ insturctional屏幕将创build图像(全屏)不透明度的背景颜色和文字完全可见。 处理显示NSUserDefaults(显示一个屏幕后,将其保存为用户默认值,以便下一次您不应该显示该特定图像时)。
不要忘记为所有屏幕创build图片(对于iPhone:4,5,6,6+)
你需要检查你的appdelegate的didFinishLaunchingWithOptions
方法,可以说你的userdefaults中有一个布尔值,这表示你是否应该从“instructional”viewcontroller或普通的viewcontroller开始。 因此,您可以将instrucitonal viewcontroller设置为故事板中的默认视图控制器,如果已经显示,则可以推送“非指示性”视图控制器。
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) }
不要忘了在用户closures/结束指令时将布尔值保存到userdefaults。
这只是解决问题的众多方法之一。 你也可以反过来做。 取决于你需要什么。