无法在代码中调用segue(Swift)

时间:2014-09-24 18:17:54

标签: ios objective-c iphone swift segue

我在导航控制器中嵌入了一些视图。

我创建了一些segues(一些从按钮到其他视图控制器,一些从一个视图控制器到另一个视图控制器。

例如我有一个segue(Show)从一个按钮到一个名为name2的视图控制器,当我按下按钮时效果很好,但是当我尝试以编程方式调用它时,应用程序崩溃并发出错误。

这就是我在 ViewController1

上调用segue的方法
self.performSegueWithIdentifier("name2", sender: self)

这是从 ViewController1 ViewController2

我也有一个不连接按钮而是从vc1连接到vc2的segue,给出了同样的错误。

这是我得到的奇怪错误:

 *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Receiver (ViewController2) has no segue with identifier 'name2''

我尝试清洁产品并重置模拟器。

我的故事板的屏幕截图

storyboard

viewcontroller1的身份检查器的屏幕(在我的项目中实际上称为ViewController)

Identity Inspector

segue(name3)segue

的屏幕截图

segue的选项: enter image description here

修改 我发现当我将按钮作为IBAction连接然后从按钮调用performSegueWithIdentifier("LogIn", sender: self)时,它可以正常工作。

任何帮助?

5 个答案:

答案 0 :(得分:2)

不要将Storyboard Editor中的Button连接到另一个segue(当你想在ViewController1中调用performWithSegue函数时) - 只需将第一个ViewController连接到第二个。

然后你可以使用

self.performSegueWithIdentifier("name2", sender: self)
在ViewController1类中

答案 1 :(得分:2)

当您将Segue从一个视图控制器设置到另一个视图控制器时,请确保您已正确设置该类 - 请参阅图像:

enter image description here

UIStoryBoardSegue是我的需要。

答案 2 :(得分:0)

错误表示您正在ViewController2中查找segue,但您的问题表明segue来自按钮。这可以解释为什么找不到它。

答案 3 :(得分:0)

尝试删除segue标识符(name),build(cmd + b),然后设置segue标识符并编译。 (当然是在故事板中)

答案 4 :(得分:0)

好的答案是,我非常愚蠢 每当我创建新的ViewControllers时,我都是ViewController的子类,这是我的第一个ViewController,而不是UIViewController,它使它以递归方式运行。