请原谅我的初学者的问题。我知道我可以切换到另一个屏幕(视图控制器)像这样
self.performSegueWithIdentifier ("SecondViewController", sender: self)
但我似乎找不到在哪里分配我的第二个屏幕的ID,我只是找到故事板ID,是吗?我已经尝试过了,只收到了崩溃与以下错误:接收器()没有标识符为“SecondViewController”的segue知道吗?谢谢
xxls0lw81#
在界面生成器中,按下ctrl并在要链接的两个视图控制器之间拖动(确保从视图控制器本身拖动,而不是从其主视图拖动)。您应该看到:
选择“Show”(显示)-例如-,输出应如下所示:
如上图所示,被红色矩形包围的箭头是segue。
因为“显示”意味着推入导航控制器堆栈。
选择segue,从属性检查器中你会看到“Identifier”文本字段,就是这样!确保插入与performSegueWithIdentifier中使用的完全相同的名称。
performSegueWithIdentifier
要从一个视图控制器添加 * 多个 * segue,请遵循相同的过程(从第一个控制器按住ctrl并拖动到每个其他视图控制器),输出应如下所示:
在这种情况下,您可能会遇到如何识别执行了哪个segue的问题,覆盖prepare(for:sender:)方法是解决方案,您可以根据segue identifier属性进行检查:
prepare(for:sender:)
identifier
override func prepare(for segue: UIStoryboardSegue, sender: Any?) { if (segue.identifier == "firstSegueIdentifier") { // ... } else if (segue.identifier == "secondSegueIdentifier") { //... } }
这将是您添加到情节提要中的segue的名称。
jm2pwxwz2#
在你的代码中
字符串"SecondViewController"看起来像故事板id。2在同一个地方你必须写segue标识符,而不是故事板id。按照屏幕截图并通过点击右上方栏字段上的segue来分配segue标识符名称。您可以这样做
self.performSegueWithIdentifier ("WriteSegueIdentifierName", sender: self)
exdqitrt3#
与提供的答案类似,下面是Xcode 12中的外观:1.在主情节提要视图中选择segue链接
1.导航至属性检查器并添加标识符(如果不存在)
1.将标识符添加到代码中。完成!
9cbw7uwe4#
当你在故事板中将一个视图控制器链接到另一个视图控制器时,在它们之间的链接中,你需要分配一个segue标识符,即“SecondViewController”,只有这样你的代码才能工作。或者,您也可以使用self.storyboard.instantiateViewControllerWithIdentifier(“//该视图控制器的故事板id”)通过故事板id显示另一个视图控制器,然后使用present/show视图控制器。
1qczuiv05#
您可以像这样启动viewController:
let viewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "Login") self.present(viewController, animated: false, completion: nil)
voase2hg6#
Show Xcode screenshot点击“显示模态segue标签......”,然后点击“属性检查器”输入“标识符”
6条答案
按热度按时间xxls0lw81#
在两个视图控制器之间添加segue:
在界面生成器中,按下ctrl并在要链接的两个视图控制器之间拖动(确保从视图控制器本身拖动,而不是从其主视图拖动)。您应该看到:
选择“Show”(显示)-例如-,输出应如下所示:
如上图所示,被红色矩形包围的箭头是segue。
因为“显示”意味着推入导航控制器堆栈。
为该片段指定标识符:
选择segue,从属性检查器中你会看到“Identifier”文本字段,就是这样!确保插入与
performSegueWithIdentifier
中使用的完全相同的名称。此外:
要从一个视图控制器添加 * 多个 * segue,请遵循相同的过程(从第一个控制器按住ctrl并拖动到每个其他视图控制器),输出应如下所示:
在这种情况下,您可能会遇到如何识别执行了哪个segue的问题,覆盖
prepare(for:sender:)
方法是解决方案,您可以根据segueidentifier
属性进行检查:这将是您添加到情节提要中的segue的名称。
jm2pwxwz2#
在你的代码中
字符串"SecondViewController"看起来像故事板id。2在同一个地方你必须写segue标识符,而不是故事板id。
按照屏幕截图并通过点击右上方栏字段上的segue来分配segue标识符名称。您可以这样做
exdqitrt3#
与提供的答案类似,下面是Xcode 12中的外观:
1.在主情节提要视图中选择segue链接
1.导航至属性检查器并添加标识符(如果不存在)
1.将标识符添加到代码中。完成!
9cbw7uwe4#
当你在故事板中将一个视图控制器链接到另一个视图控制器时,在它们之间的链接中,你需要分配一个segue标识符,即“SecondViewController”,只有这样你的代码才能工作。
或者,您也可以使用self.storyboard.instantiateViewControllerWithIdentifier(“//该视图控制器的故事板id”)通过故事板id显示另一个视图控制器,然后使用present/show视图控制器。
1qczuiv05#
您可以像这样启动viewController:
voase2hg6#
Show Xcode screenshot
点击“显示模态segue标签......”,然后点击“属性检查器”输入“标识符”