Xcode,在哪里分配segue标识符
请原谅我在Swift 2中的初学者问题。我知道我可以像这样切换到另一个屏幕(ViewController)
self.performSegueWithIdentifier ("SecondViewController", sender: self)
但我似乎无法find哪里分配我的第二个屏幕的ID,我只是find故事板ID,是吗?
我已经尝试过,只收到与以下错误的崩溃:
'Receiver (<MyApps.RegViewController: 0x7fda5ae3abf0>) has no segue with identifier 'SecondViewController''
任何想法? 谢谢
Segue标识符 不同于 故事板ID ,当您想要创build基于特定故事板的viewController时使用的故事板ID ,它不得不与segue标识符一样是唯一的。
如果你已经知道如何创build一个segue,你可以跳过这个部分。
在两个viewControllers之间添加一个segue:
在界面生成器中,按下ctrl并在要链接的两个viewController之间拖动。 你应该看到:
select显示 – 例如,输出应该是这样的:
被红色长方形包围的箭头是赛格。
附加说明:如果select“显示”,则在navigationController中embedded您的第一个viewController(select您的第一个viewController – > Editor – > Embed In – > Navigation Controller),输出应该如下所示:
为segue分配一个标识符:
selectsegue,从属性检查器中你会看到“Identifier”文本字段,就是这样! 确保插入与performSegueWithIdentifier
中使用的完全相同的名称。
如果你不知道在哪里find属性检查器,它是在右上angular看起来像:
也:
为了从一个viewController添加多个 segues到很多,按照相同的过程(ctrl +从第一个控制器拖到每个其他viewController),输出应该看起来像这样:
在这种情况下,您可能会遇到如何识别哪个segue已被执行的问题,覆盖prepareForSegue
方法是解决scheme,您可以根据segue标识符进行检查:
override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) { if (segue.identifier == "firstSegueIdentifier") { // ... } else if (segue.identifier == "secondSegueIdentifier") { //... } }
当您将视图控制器链接到故事板中的另一个视图控制器时,在它们之间的链接中,您需要分配一个segue标识符,即“SecondViewController”,只有您的代码才能工作。
或者,你也可以使用self.storyboard.instantiateViewControllerWithIdentifier(“//该视图控制器的storyboard id”)来显示另一个视图控制器,然后使用present / show view controller。
在你的代码中
self.performSegueWithIdentifier ("SecondViewController", sender: self)
string“SecondViewController”看起来像storyboard id。 在同一个地方,你必须编写segue标识符,而不是storyboard id。
按照屏幕截图,通过点击右上栏上的segue来指定segue标识符名称。 你可以这样做
self.performSegueWithIdentifier ("WriteSegueIdentifierName", sender: self)