StoryboardID 和 StoryboardSegueIdentifier 之间的区别

Difference between StoryboardID and StoryboardSegueIdentifier

我们可以使用 segueIdentifiers 从 mainViewController 移动到 detailViewController。示例:

performSegueWithIdentifier("toDetailViewController", sender: self)

我们还可以使用 StoryboardID 从故事板手动创建 detailViewController,然后从 mainViewController 推送或呈现。示例:

let detailViewController: UIViewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("detailViewController") as UIViewController
self.present(detailViewController)

我的问题是:这些方法有什么区别?他们似乎在做同样的事情。

不同的是,一个是通过故事板完成的(你可以看到segue箭头),另一个是通过编程完成的。这就像你问在 swift 中编程 UI 和使用故事板编程有什么区别一样。

在第一种情况下,您甚至不必调用 performSegueWithIdentifier,您可以将 segue 绑定到情节提要中的按钮,因此仅使用情节提要而无需任何 swift 代码。

虽然有很多文章都在讨论情节提要,但我真的建议您看一下 this one,从不同的角度来看它。

他们都引用了故事板相关的标识符。主要区别在于一个 performSegueWithIdentifier 基于 segue 和 where the segue points to 实例化一个对象,而另一个 instantiateViewControllerWithIdentifier 基于 Viewcontroller 标识符实例化一个唯一的 Viewcontroller (不是继续)。

故事板中的不同位置可以有多个具有相同标识符的转场,而故事板中的 Viewcontroller 不能有相同的标识符。