我正在尝试检测该应用程序是否是首次打开。我已将这段代码放入我的 ViewController 的 viewDidLoad()
override func viewDidLoad() {
super.viewDidLoad()
let launchedBefore = UserDefaults.standard.bool(forKey: "launchedBefore")
if launchedBefore {
performSegue(withIdentifier: "toMainController", sender: self)
print("launchedBefore")
} else {
performSegue(withIdentifier: "toTutorialController", sender: self)
UserDefaults.standard.set(true, forKey: "launchedBefore")
print("not launchedBefore")
}
}
但是,无论何时启动 ViewController,都不会执行任何转场。但是我告诉它打印的内容被打印了。如果重要的话,segue "toMainController"
转到的 View 是一个 UITabViewController
,而 segue "toTutorialController"
转到的 View 只是一个 UIViewController
。
有没有人知道为什么这不起作用?
更新
我发现了这个错误
2017-06-30 09:02:32.984 AppName[29732:24744712] Warning: Attempt to present on < AppName.ViewController: 0x7fcbfa908ed0> whose view is not in the window hierarchy!
最佳答案
先保存到userDefault,然后执行segue:-
override func viewDidLoad() {
super.viewDidLoad()
let launchedBefore = UserDefaults.standard.bool(forKey: "launchedBefore")
if launchedBefore {
performSegue(withIdentifier: "toMainController", sender: self)
print("launchedBefore")
} else {
UserDefaults.standard.set(true, forKey: "launchedBefore")
performSegue(withIdentifier: "toTutorialController", sender: self)
print("not launchedBefore")
}
}
关于ios - 检测首次启动时出错(Swift),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44846842/