Xcode,在哪里分配segue标识符
Xcode, where to assign the segue identifier
请原谅我的初学者问题。
我知道我可以像这样切换到另一个屏幕 (ViewController)
self.performSegueWithIdentifier ("SecondViewController", sender: self)
但我似乎找不到在哪里为我的第二个屏幕分配 ID,我只是找到 Storyboard ID,是吗?
我已经尝试过,只收到以下错误的崩溃:
Receiver () has no segue
with identifier 'SecondViewController'
有什么想法吗?谢谢
当你 link 一个视图控制器到故事板中的另一个视图控制器时,在它们之间的 link 你需要分配一个 segue 标识符,即 "SecondViewController" 只有这样你的代码才会工作。
或者,您也可以使用 self.storyboard.instantiateViewControllerWithIdentifier("//那个视图控制器的故事板 ID") 通过故事板 ID 显示另一个视图控制器,然后使用 present/show 视图控制器。
Segue Identifier not 与 storyboard ID 相同,storyboard ID used when you想要基于那个特定的故事板创建一个视图控制器 - 它必须是唯一的,与 segue 标识符不同 -
如果你已经知道如何创建segue,你可以跳过这部分。
在两个 viewController 之间添加一个 segue:
在 Interface Builder 中,按下 ctrl 并在您想要 link 的两个视图控制器之间拖动(确保您从视图控制器拖动本身,而不是它的主要观点)。你应该看到:
选择 "Show" -例如-,输出应如下所示:
如上图,红色矩形框内的箭头就是segue。
补充说明:如果您select编辑了"Show"选项,您必须将您的第一个视图控制器嵌入导航控制器(select 你的第一个 viewController -> Editor -> Embed In -> Navigation Controller),输出应该是这样的:
因为 "Show" 意味着推入导航控制器堆栈。
正在为 segue 分配标识符:
Select segue,从属性检查器你会看到 "Identifier" 文本字段,就是这样!确保插入与 performSegueWithIdentifier
.
中使用的名称完全相同的名称
如果你不知道在哪里可以找到属性检查器,它在右上角看起来像:
此外:
要从一个 View Controller 添加 multiple segues,请遵循相同的过程(ctrl + 从第一个控制器拖动到彼此的 View控制器),输出应如下所示:
在这种情况下,您可能会遇到如何识别执行了哪个segue的问题,覆盖prepare(for:sender:)
方法是解决方案,您可以根据segue进行检查identifier
属性:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if (segue.identifier == "firstSegueIdentifier") {
// ...
} else if (segue.identifier == "secondSegueIdentifier") {
//...
}
}
这将是您在故事板中添加到 segue 的名称。
在你的代码中
self.performSegueWithIdentifier ("SecondViewController", sender: self)
字符串 "SecondViewController" 看起来像故事板 ID。在同一个地方你必须写 segue identifier ,而不是 storyboard id 。
按照屏幕截图并通过单击右上栏字段上的 segue 来分配 segue 标识符名称。你可以这样做
self.performSegueWithIdentifier ("WriteSegueIdentifierName", sender: self)
您可以像这样启动 viewController:
let viewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "Login")
self.present(viewController, animated: false, completion: nil)
与提供的答案类似,这是 Xcode 12 中的样子:
- Select 主情节提要视图中的转场 link
- 导航到属性检查器并添加标识符(如果不存在)
- 将标识符添加到您的代码中。完成!
请原谅我的初学者问题。 我知道我可以像这样切换到另一个屏幕 (ViewController)
self.performSegueWithIdentifier ("SecondViewController", sender: self)
但我似乎找不到在哪里为我的第二个屏幕分配 ID,我只是找到 Storyboard ID,是吗?
我已经尝试过,只收到以下错误的崩溃:
Receiver () has no segue with identifier 'SecondViewController'
有什么想法吗?谢谢
当你 link 一个视图控制器到故事板中的另一个视图控制器时,在它们之间的 link 你需要分配一个 segue 标识符,即 "SecondViewController" 只有这样你的代码才会工作。
或者,您也可以使用 self.storyboard.instantiateViewControllerWithIdentifier("//那个视图控制器的故事板 ID") 通过故事板 ID 显示另一个视图控制器,然后使用 present/show 视图控制器。
Segue Identifier not 与 storyboard ID 相同,storyboard ID used when you想要基于那个特定的故事板创建一个视图控制器 - 它必须是唯一的,与 segue 标识符不同 -
如果你已经知道如何创建segue,你可以跳过这部分。
在两个 viewController 之间添加一个 segue:
在 Interface Builder 中,按下 ctrl 并在您想要 link 的两个视图控制器之间拖动(确保您从视图控制器拖动本身,而不是它的主要观点)。你应该看到:
选择 "Show" -例如-,输出应如下所示:
如上图,红色矩形框内的箭头就是segue。
补充说明:如果您select编辑了"Show"选项,您必须将您的第一个视图控制器嵌入导航控制器(select 你的第一个 viewController -> Editor -> Embed In -> Navigation Controller),输出应该是这样的:
因为 "Show" 意味着推入导航控制器堆栈。
正在为 segue 分配标识符:
Select segue,从属性检查器你会看到 "Identifier" 文本字段,就是这样!确保插入与 performSegueWithIdentifier
.
如果你不知道在哪里可以找到属性检查器,它在右上角看起来像:
此外:
要从一个 View Controller 添加 multiple segues,请遵循相同的过程(ctrl + 从第一个控制器拖动到彼此的 View控制器),输出应如下所示:
在这种情况下,您可能会遇到如何识别执行了哪个segue的问题,覆盖prepare(for:sender:)
方法是解决方案,您可以根据segue进行检查identifier
属性:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if (segue.identifier == "firstSegueIdentifier") {
// ...
} else if (segue.identifier == "secondSegueIdentifier") {
//...
}
}
这将是您在故事板中添加到 segue 的名称。
在你的代码中
self.performSegueWithIdentifier ("SecondViewController", sender: self)
字符串 "SecondViewController" 看起来像故事板 ID。在同一个地方你必须写 segue identifier ,而不是 storyboard id 。
按照屏幕截图并通过单击右上栏字段上的 segue 来分配 segue 标识符名称。你可以这样做
self.performSegueWithIdentifier ("WriteSegueIdentifierName", sender: self)
您可以像这样启动 viewController:
let viewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "Login")
self.present(viewController, animated: false, completion: nil)
与提供的答案类似,这是 Xcode 12 中的样子:
- Select 主情节提要视图中的转场 link
- 导航到属性检查器并添加标识符(如果不存在)
- 将标识符添加到您的代码中。完成!