当我不使用界面构建器时如何实施 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。我个人发现当我以编程方式实例化它们并让协调器管理它们时,呈现视图控制器会更容易。如果你对此感到好奇,我可以提供一些例子。