请原谅我的初学者问题。 我知道我可以像这样切换到另一个屏幕 (ViewController)
self.performSegueWithIdentifier ("SecondViewController", sender: self)
但我似乎无法找到在哪里为我的第二个屏幕分配 ID,我只是找到 Storyboard ID,是吗?
我已经尝试过了,只收到了一个崩溃并出现以下错误:
Receiver () has no segue with identifier 'SecondViewController'
有什么想法吗?谢谢
最佳答案
Segue Identifier 与 storyboard ID not 相同,storyboard ID 在您要基于该特定 Storyboard 创建 View Controller 时使用-而且它必须是唯一的,与 segue 标识符不同-。
如果您已经知道如何创建 segue,则可以跳过这部分。
在两个 viewController 之间添加一个 segue:
在 Interface Builder 中,按下 ctrl 并在您要链接的两个 View Controller 之间拖动(确保您是从 View Controller 本身拖动,而不是它的主视图)。你应该看到:
例如,选择“显示”,输出应如下所示:
如上图,红色矩形框内的箭头就是segue。
补充说明:如果您选择了“显示”选项,则必须将您的第一个 View Controller 嵌入到导航 Controller 中(选择您的第一个 View Controller -> 编辑器 -> 嵌入 -> 导航 Controller ),输出应如下所示:
因为“显示”意味着插入导航 Controller 堆栈。
为 segue 分配标识符:
选择 segue,从属性检查器中您会看到“Identifier”文本字段,就是这样!确保插入与 performSegueWithIdentifier
中使用的名称完全相同的名称。
如果您不知道在哪里可以找到属性检查器,它位于右上角,如下所示:
此外:
要从一个 View Controller 添加多个 segues,请遵循相同的过程(ctrl + 从第一个 Controller 拖动到其他 View Controller ),输出应该如下所示:
在这种情况下,您可能会面临如何识别已执行哪个转场的问题,覆盖 prepare(for:sender:)
方法是解决方案,您可以根据 segue identifier
属性进行检查:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if (segue.identifier == "firstSegueIdentifier") {
// ...
} else if (segue.identifier == "secondSegueIdentifier") {
//...
}
}
这将是您添加到 Storyboard 中的 segue 的名称。
关于ios - Xcode,在哪里分配segue标识符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39904328/