你怎么能创建一个只在第一次出现的教学屏幕(在Swift中)

时间:2015-03-23 14:54:06

标签: ios iphone xcode 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没有名为' window'

的成员

我怎么能让这个工作?

谢谢!

2 个答案:

答案 0 :(得分:3)

我建议创建教程/安装屏幕的建议是创建不透明背景颜色和文本完全可见的图像(全屏)。使用NSUserDefaults显示句柄(显示一个屏幕后,将其保存为用户默认值,以便下次知道您不应该显示该特定图像)。

不要忘记为所有屏幕创建图片(适用于iPhone:4,5,6,6 +)

答案 1 :(得分:2)

你需要检查你的appdelegate的didFinishLaunchingWithOptions方法,比如你的userdefaults中的一个布尔值,这表明你应该从一个“指导”的viewcontroller或普通的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)
    }

当用户解散/结束说明时,别忘了将布尔值保存到userdefaults。

这只是解决问题的众多方法之一。你也可以反过来做。取决于你需要什么。