我想在检查它是否是应用程序的第一次运行后打开另一个视图控制器。 当我按下按钮时它可以工作,但是当我调用方法openMap
时却没有class TutorialController: UIViewController {
override func viewDidLoad() {
//check if the app opens for the first time
if(UserDefaults.standard.bool(forKey: "HasLaunchedOnce"))
{
// app already launched
print("not first launch")
openMap()
}
else
{
// This is the first launch ever
UserDefaults.standard.set(true, forKey: "HasLaunchedOnce")
UserDefaults.standard.synchronize()
print("first launch")
openTutorial()
}
}
func openTutorial(){
}
@IBAction func openMap(){
print("openmap opened")
performSegue(withIdentifier: "openMap", sender: nil)
}
}
答案 0 :(得分:0)
好的,据我所知,你想在HasLaunchedOnce时执行一个segue“openMap”。那么你做错了就是你正在调用一个@IBAction函数。这是我的建议
如果你还想要那个按钮
例如:
if let lat = latitude, let doubleLat = Double(lat) {
print(doubleLat) // doubleLat is of type Double now
}
希望这会有所帮助
答案 1 :(得分:0)
我认为,您已将按钮连接到@IBAction func openMap()
如果是这样,您不应在openMap()
内拨打viewDidLoad
操作,而是在performSegue(withIdentifier: "openMap", sender: nil)
中使用相同的代码viewDidAppear
:
if(UserDefaults.standard.bool(forKey: "HasLaunchedOnce"))
{
// app already launched
print("not first launch")
performSegue(withIdentifier: "openMap", sender: nil)
}
...
如果它不起作用,您可能在创建segue时犯了一个错误,并将Button直接连接到故事板中的目标ViewController,而不是连接两个控制器: < / p>
如果是这样,只需删除旧的segue,然后按照上图中的方式重新创建它并分配相同的segue id&#34; openMap&#34;
EDITED: 请将您的segue执行到viewDidAppear而不是viewDidLoad,因为在创建ViewController对象并且它尚未附加到窗口时调用viewDidLoad。