当第一次用户从选项卡栏 Controller 打开 ViewController 时,我试图弹出一个 UIView - 我只想有一个消息弹出窗口来解释它是如何工作的,就像教程一样。
我已经实现了这个,以便第一个 ViewController 在启动时弹出,但我想让它检查我的选项卡栏上的多个 ViewController 上的首次启动。我不太确定我在这里做错了什么。该 View 有:UIImageView、UITextView 和一个 UIButton,我将用它在点击时“隐藏” View 。
override func viewDidLoad() {
super.viewDidLoad()
isAppAlreadyLaunchedOnce()
}
func isAppAlreadyLaunchedOnce()->Bool{
let defaults = NSUserDefaults.standardUserDefaults()
if let isAppAlreadyLaunchedOnce = defaults.stringForKey("isAppAlreadyLaunchedOnce"){
print("App already launched")
return true
}else{
backgrdView.hidden = false
messageView.hidden = false
textView.hidden = false
okButton.hidden = false
tobysLabel.hidden = false
return false
}
}
@IBAction func okButtonTapped(sender: UIButton) {
backgrdView.hidden = true
messageView.hidden = true
tobysLabel.hidden = true
textView.hidden = true
okButton.hidden = true
}
最佳答案
不是检查 isAppAlreadyLaunchedOnce,而是检查 ViewController 的启动。所以 firstVC 是 launch 添加到 userDefaults firstVC 为真。如果启动第二个,则将 secondVC 设置为 true。所以这将为各个 VC 维护 userDefaults。点击确定时设置您的 UserDefaults。然后在检查每个 VC 的 firstLaunch 时在所有 VC 中执行此操作。请为不同的 VC 保留不同的 key 。
func isAppAlreadyLaunchedOnce()->Bool{
let defaults = NSUserDefaults.standardUserDefaults()
if defaults.boolForKey("firstVC") {
print("First VC launched")
return true
}else{
backgrdView.hidden = false
messageView.hidden = false
textView.hidden = false
okButton.hidden = false
tobysLabel.hidden = false
return false
}
}
@IBAction func okButtonTapped(sender: UIButton) {
backgrdView.hidden = true
messageView.hidden = true
tobysLabel.hidden = true
textView.hidden = true
okButton.hidden = true
NSUserDefaults.standardUserDefaults().setBool(true, forKey: "firstVC")
}
关于ios - 检测在多个 ViewController 上的首次启动 - Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36118049/