我正在尝试向我的代码添加一个简介序列,这样如果它是第一次打开应用程序,用户就可以输入一些基本信息(我可以将其存储在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
答案 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)
}