我正在尝试检测这是否是用户的首次访问,如果是这种情况,则显示一个欢迎屏幕,但是我似乎无法使其正常工作,而且我不确定自己做错了什么。我查看了这里的一些建议并按照建议进行了操作,以为我理解了这个概念,但是我无法使它起作用。
即使我尝试擦除模拟器中的所有内容和设置,我也被直接发送到ViewController。
有什么想法我做错了吗?任何提示将非常感谢。
这是代码:
func didFinishLaunchingWithOptions下的AppDelegate
self.window = UIWindow(frame: UIScreen.main.bounds)
let storyboard = UIStoryboard(name: "Main", bundle: nil)
var vc: UIViewController?
var ud = UserDefaults.standard.bool(forKey: "UDisFirstVisit")
if ud == true {
print("This is the user's first visit")
vc = storyboard.instantiateViewController(withIdentifier: "Welcome_01")
} else if ud == false {
print ("This is NOT the user's first visit")
vc = storyboard.instantiateInitialViewController()!
}
self.window?.rootViewController = vc
self.window?.makeKeyAndVisible()
return true
Welcome_01(欢迎VC)
import UIKit
var isFirstVisit = true
class Welcome_01: UIViewController {
@IBAction func finishedwelcome(_ sender: Any) {
isFirstVisit = false
UserDefaults.standard.set(isFirstVisit, forKey: "UDisFirstVisit")
}
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
UIViewController(应该在第一次访问后显示的VC)。
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
}
最佳答案
只需在您的想象中跟踪动作即可。用户第一次运行应用程序时会发生什么?
var ud = UserDefaults.standard.bool(forKey: "UDisFirstVisit")
好吧,用户默认值从未被输入过。所以
ud
不是true
,因为它不是任何东西-它不存在!所以是false
。因此,您的欢迎视图控制器从未被看到。只是扭转你的逻辑。首先询问键
"UserHasSeenWelcome"
是否为假。如果是,请显示欢迎函。并将密钥设置为true
。