当我不使用界面构建器时如何实施 prepareForSegue?
How to implement prepareForSegue when I am not working with interface builders?
我正在从故事板的世界转向没有故事板的世界。我想知道在这种情况下如何实现 prepareForSegue 方法。因为此方法使用 segue 标识符,而我知道提供 segue 标识符的唯一方法是通过情节提要,所以当我不使用任何情节提要时,我不确定如何执行此操作。
Segues 是故事板的东西。注意 prepareForSegue 收到一个 UIStoryboardSegue。如果您正在远离故事板,那么您也正在远离故事板 segues。
来自 performSegue 上的文档:
The current view controller must have been loaded from a storyboard. If its storyboard property is nil, perhaps because you allocated and initialized the view controller yourself, this method throws an exception.
Vishisht,
您将要覆盖 ViewController 中的 prepare(for:sender:) 函数。
您将要配置 segue 标识符,然后您可以这样配置您的 segue:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "mySegueIdentifier" {
if let destination = segue.destination as? SomeViewController {
// Configure your destination VC
}
}
}
话虽这么说,如果您不使用故事板,您可能应该远离使用 segues。我个人发现当我以编程方式实例化它们并让协调器管理它们时,呈现视图控制器会更容易。如果你对此感到好奇,我可以提供一些例子。
我正在从故事板的世界转向没有故事板的世界。我想知道在这种情况下如何实现 prepareForSegue 方法。因为此方法使用 segue 标识符,而我知道提供 segue 标识符的唯一方法是通过情节提要,所以当我不使用任何情节提要时,我不确定如何执行此操作。
Segues 是故事板的东西。注意 prepareForSegue 收到一个 UIStoryboardSegue。如果您正在远离故事板,那么您也正在远离故事板 segues。
来自 performSegue 上的文档:
The current view controller must have been loaded from a storyboard. If its storyboard property is nil, perhaps because you allocated and initialized the view controller yourself, this method throws an exception.
Vishisht,
您将要覆盖 ViewController 中的 prepare(for:sender:) 函数。
您将要配置 segue 标识符,然后您可以这样配置您的 segue:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "mySegueIdentifier" {
if let destination = segue.destination as? SomeViewController {
// Configure your destination VC
}
}
}
话虽这么说,如果您不使用故事板,您可能应该远离使用 segues。我个人发现当我以编程方式实例化它们并让协调器管理它们时,呈现视图控制器会更容易。如果你对此感到好奇,我可以提供一些例子。