我在导航控制器中嵌入了一些视图。
我创建了一些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''
我尝试清洁产品并重置模拟器。
我的故事板的屏幕截图
viewcontroller1的身份检查器的屏幕(在我的项目中实际上称为ViewController)
segue(name3)
segue的选项:
修改
我发现当我将按钮作为IBAction连接然后从按钮调用performSegueWithIdentifier("LogIn", sender: self)
时,它可以正常工作。
任何帮助?
答案 0 :(得分:2)
不要将Storyboard Editor中的Button连接到另一个segue(当你想在ViewController1中调用performWithSegue函数时) - 只需将第一个ViewController连接到第二个。
然后你可以使用
self.performSegueWithIdentifier("name2", sender: self)
在ViewController1类中。
答案 1 :(得分:2)
答案 2 :(得分:0)
错误表示您正在ViewController2
中查找segue,但您的问题表明segue来自按钮。这可以解释为什么找不到它。
答案 3 :(得分:0)
尝试删除segue标识符(name),build(cmd + b),然后设置segue标识符并编译。 (当然是在故事板中)
答案 4 :(得分:0)
好的答案是,我非常愚蠢
每当我创建新的ViewControllers时,我都是ViewController
的子类,这是我的第一个ViewController,而不是UIViewController
,它使它以递归方式运行。