首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用segue只按下按钮打开其他视图

用segue只按下按钮打开其他视图
EN

Stack Overflow用户
提问于 2016-11-02 13:50:34
回答 2查看 128关注 0票数 0

我想打开另一个视图控制器,检查它是否是应用程序的第一次运行。它在我按下按钮时起作用,但当我调用方法openMap时就不行了。

代码语言:javascript
复制
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)

}


}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-11-02 14:22:18

如果您已经将按钮连接到@IBAction func openMap(),则不应该在viewDidLoad中调用openMap()操作,而应该在viewDidAppear中使用相同的代码performSegue(withIdentifier: "openMap", sender: nil)

代码语言:javascript
复制
if(UserDefaults.standard.bool(forKey: "HasLaunchedOnce"))
    {
        // app already launched
        print("not first launch")
        performSegue(withIdentifier: "openMap", sender: nil)
    }
...

如果它不起作用,您可能在创建segue时犯了错误,并将Button直接连接到故事板中的目标ViewController,而不是连接两个控制器:

如果是这样,只需删除旧的segue,并按照上面图像上的方式重新创建它,并分配相同的segue id "openMap“。

编辑:请将您的segue的执行移到viewDidAppear而不是viewDidLoad,因为viewDidLoad是在创建ViewController对象时调用的,并且它还没有附加到窗口。

票数 0
EN

Stack Overflow用户

发布于 2016-11-02 14:20:39

好的,据我所知,您想要在openMap时执行一个segue“HasLaunchedOnce”。那么,您做错的是您正在调用@IBAction func。这是我的建议

如果你还想要那个按钮

  1. 创建一个函数和名称,如果你想要的话。在此函数中执行此函数。将此函数链接到if else语句和按钮。

例:

代码语言:javascript
复制
//if else statement
if(UserDefaults.standard.bool(forKey: "HasLaunchedOnce"))
{
        // app already launched
        print("not first launch")
        anotherFunction()
}

//@ibaction (scrap this if you don't want the button)
@IBAction func openMap()
{
    print("openmap opened")
    anotherFunction()

}

//another function
func anotherFunction()
{
    performSegue(withIdentifier: "openMap", sender: nil)
}

希望这能帮上忙

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40381620

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档