Xcode,在何处分配segue标识符

oalqel3c  于 2023-02-13  发布在  其他
关注(0)|答案(6)|浏览(151)

请原谅我的初学者的问题。我知道我可以切换到另一个屏幕(视图控制器)像这样

self.performSegueWithIdentifier ("SecondViewController", sender: self)

但我似乎找不到在哪里分配我的第二个屏幕的ID,我只是找到故事板ID,是吗?
我已经尝试过了,只收到了崩溃与以下错误:
接收器()没有标识符为“SecondViewController”的segue
知道吗?谢谢

xxls0lw8

xxls0lw81#

  • Segue Identifier* 与 storyboard ID 不同,当您要基于特定的序列图像板创建视图控制器时使用该序列图像板ID-并且它必须是唯一的,这与segue Identifier不同-。
  • 如果你已经知道如何创建一个segue,你可以跳过这一部分。*

在两个视图控制器之间添加segue:

在界面生成器中,按下ctrl并在要链接的两个视图控制器之间拖动(确保从视图控制器本身拖动,而不是从其主视图拖动)。您应该看到:

选择“Show”(显示)-例如-,输出应如下所示:

如上图所示,被红色矩形包围的箭头是segue。

  • 附加说明:* 如果您选择了“显示”选项,您必须将您的第一个视图控制器嵌入到导航控制器中(选择您的第一个视图控制器-〉编辑器-〉嵌入-〉导航控制器),输出应该如下所示:

因为“显示”意味着推入导航控制器堆栈。

为该片段指定标识符:

选择segue,从属性检查器中你会看到“Identifier”文本字段,就是这样!确保插入与performSegueWithIdentifier中使用的完全相同的名称。

  • 如果你不知道在哪里可以找到属性检查器,它在右上角看起来像:*

此外:

要从一个视图控制器添加 * 多个 * segue,请遵循相同的过程(从第一个控制器按住ctrl并拖动到每个其他视图控制器),输出应如下所示:

在这种情况下,您可能会遇到如何识别执行了哪个segue的问题,覆盖prepare(for:sender:)方法是解决方案,您可以根据segue identifier属性进行检查:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if (segue.identifier == "firstSegueIdentifier") {
        // ...
    } else if (segue.identifier == "secondSegueIdentifier") {
        //...
    }
}

这将是您添加到情节提要中的segue的名称。

jm2pwxwz

jm2pwxwz2#

在你的代码中

self.performSegueWithIdentifier ("SecondViewController", sender: self)

字符串"SecondViewController"看起来像故事板id。2在同一个地方你必须写segue标识符,而不是故事板id。
按照屏幕截图并通过点击右上方栏字段上的segue来分配segue标识符名称。您可以这样做

self.performSegueWithIdentifier ("WriteSegueIdentifierName", sender: self)

exdqitrt

exdqitrt3#

与提供的答案类似,下面是Xcode 12中的外观:
1.在主情节提要视图中选择segue链接

1.导航至属性检查器并添加标识符(如果不存在)

1.将标识符添加到代码中。完成!

9cbw7uwe

9cbw7uwe4#

当你在故事板中将一个视图控制器链接到另一个视图控制器时,在它们之间的链接中,你需要分配一个segue标识符,即“SecondViewController”,只有这样你的代码才能工作。
或者,您也可以使用self.storyboard.instantiateViewControllerWithIdentifier(“//该视图控制器的故事板id”)通过故事板id显示另一个视图控制器,然后使用present/show视图控制器。

1qczuiv0

1qczuiv05#

您可以像这样启动viewController:

let viewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "Login")
self.present(viewController, animated: false, completion: nil)
voase2hg

voase2hg6#

Show Xcode screenshot
点击“显示模态segue标签......”,然后点击“属性检查器”输入“标识符”

相关问题