实现简介序列的最佳方法?迅速

时间:2016-10-11 03:52:24

标签: ios swift

我正在尝试向我的代码添加一个简介序列,这样如果它是第一次打开应用程序,用户就可以输入一些基本信息(我可以将其存储在UserDefaults中)。

我想要这样做的方法是使用一个名为isFirstTime的变量,该变量最初设置为true。每次打开应用程序时,它都会检查UserDefaults中是否存在isFirstTime的值。如果它不存在,它将触发出现我的前奏序列的视图控制器。介绍序列完成后,isFirstTime将设置为false,然后存储在UserDefaults中。

这是一个正确的实现,还是有更有效的方法?

编辑:如果有人有兴趣,这是我用来实现我的简介序列的代码。我首先在View Controller之外分配一个布尔变量,用于跟踪它是否是第一次打开应用程序。

var isFirstTime = true

然后,在我的ViewDidAppear中(它在ViewDidLoad方法中不起作用),我添加了此代码,用于检查我{{1}是否已经有UserDefault变量。如果是,我然后执行我的程序的其余部分,但如果没有,我启动我的介绍序列的视图控制器。

isFirstTime

在我的介绍序列视图控制器中,当我完成收集用户的基本信息时,我做了两件事:第一个是更改if UserDefaults.standard.object(forKey: "isFirstTime") != nil{ // Not the first time app is opened isFirstTime = false // I use isFirstTime elsewhere in my code too. } else { let introVC = self.storyboard?.instantiateViewController(withIdentifier: "intro") self.present(introVC!, animated: false, completion: nil) } 的值并将其设置为UserDefault,第二个是解雇View Controller。

isFirstTime

1 个答案:

答案 0 :(得分:3)

您可以轻松实现。这是我用过的代码。

第1步首先创建一个名为UserDefaultManager.swift的文件

import UIKit

// User Defaults Manager Constants
let kIsFirstTimeLaunch = "IsFirstTimeLaunch"

class UserDefaultsManager: NSObject {

// MARK: Setter Methods

class func setIsFirstTimeLaunch(flag: Bool) {
    NSUserDefaults.standardUserDefaults().setBool(flag, forKey:kIsFirstTimeLaunch)
    NSUserDefaults.standardUserDefaults().synchronize()
}

// MARK: Getter Methods

class func isFirstTimeLaunch() -> Bool {
    return NSUserDefaults.standardUserDefaults().boolForKey(kIsFirstTimeLaunch)
}

// MARK: Reset Methods

class func resetIsFirstTimeLaunch() {
    NSUserDefaults.standardUserDefaults().removeObjectForKey(kIsFirstTimeLaunch)
    NSUserDefaults.standardUserDefaults().synchronize()
}

}

步骤2:在您的实施文件中,检查如下:

   if(!UserDefaultsManager.isFirstTimeLaunch()) {
        // Your code here.
        let introVC = self.storyboard?.instantiateViewController(withIdentifier: "intro")
        self.present(introVC!, animated: false, completion: nil)

        // Update value in user defaults
        UserDefaultsManager.setIsFirstTimeLaunch(true)
    }