performSegueWithIdentifier没有带标识符的segue

时间:2015-01-11 16:57:30

标签: ios swift ios8 xcode6

我在测试我的应用时遇到了崩溃。以下图片是我的故事板:

storyboard

我在View Controller中有代码:

@IBAction func unwindToHomeScreen(segue:UIStoryboardSegue) {

}

"添加新项目"有一个"取消"按钮,我控制 - 拖动到"退出"顶部的图标和unwindToHomeScreen的链接,它可以正常工作。

"添加新项目"有一个类AddTableViewController和我在里面写的代码:

@IBAction func save() {
    // Execute the unwind segue and go back to the home screen
    performSegueWithIdentifier("unwindToHomeScreen", sender: self)
}

我控制 - 拖动" Save"按钮到func,但是当我点击按钮时应用程序崩溃

我可以使用dismissViewControllerAnimated(true, completion: nil),但我只是想知道为什么performSegueWithIdentifier无效?

我在dropbox.com/s/hpybgg9x67rtqng/foodpinstatictable.zip?dl=0阅读了代码并尝试制作一个并使用performSegueWithIdentifier这个例子进行练习,我没有看到她的segue标识符,有什么区别?< / p>

7 个答案:

答案 0 :(得分:58)

你实际上没有给segue一个标识符。 unwindToHomeScreen是一个可以调用的函数;您正在寻找的是您的segue标识符,它在Interface Builder中设置如下:

Set an identifier

在这个例子中,我有一个按钮通过Interface Builder连接到下一个视图(如“Interface Builder”)和在我的视图控制器中连接到此IBAction的按钮(“编程”) :

@IBAction func goToNextView(sender: UIButton!) {
    self.performSegueWithIdentifier:("go", sender: self)
}

在任何情况下,您缺少的是实际标识符,可以在Interface Builder中创建的segue的属性中设置。

答案 1 :(得分:3)

我发现因为我重命名了我的视图控制器,所以我需要删除并重新创建segue。

答案 2 :(得分:0)

就我而言,重新排序嵌入

标签栏控制器    导航控制器        vc(包含按钮-点击按钮可启动“显示,例如推送”搜索)

太固定导航栏中的标题

答案 3 :(得分:0)

iOS 12和更早版本(iOS 13似乎没有遇到相同的问题)的可能问题可能是由于从视图控制器viewdidLoad()回调调用了 performSegue(withIdentifier:,sender :)这个事实引起的

为了避免出现上述问题,您绝对必须从 viewDidAppear(_ animation:Bool)回调中调用它。

那肯定会节省数小时的头发修剪时间……

答案 4 :(得分:0)

迅速4:

有时我们必须清理构建文件夹,然后重试:=)

ctrl拖动新的segue并为其命名后,以编程方式将其用作:

        performSegue(withIdentifier: "goToMyNewViewController", sender: self)

答案 5 :(得分:0)

我遇到了同样的问题。

我所做的只是:

我在故事板中选择了转场指示器。

已删除。

然后创建一个具有相同标识符的新 segue。 Boom,它有效。

答案 6 :(得分:-1)

对我来说 - &gt;单击视图控制器之间的关系箭头,然后选择属性检查器,有标识符给出名称并选择推送类完成...