代码之家  ›  专栏  ›  技术社区  ›  Hapeki

StoryboardID和StoryboardSegueIdentifier之间的差异

  •  1
  • Hapeki  · 技术社区  · 7 年前

    我们可以从 mainViewController 给我们 detailViewController 使用segueIdentifiers。例子:

    performSegueWithIdentifier("toDetailViewController", sender: self)
    

    我们还可以手动创建 detailViewController 从我们的故事板使用一个故事板ID,然后从 主视图控制器 . 例子:

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

    我的问题是:这些方法之间有什么区别?他们似乎做了完全相同的事情。

    2 回复  |  直到 7 年前
        1
  •  2
  •   Dixit Akabari    7 年前

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

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

        2
  •  2
  •   Milan Nosáľ    7 年前

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

    在第一种情况下,你甚至不需要打电话 performSegueWithIdentifier ,您可以将segue绑定到故事板中的按钮,因此只使用故事板而不使用任何swift代码。

    虽然有很多文章都在谈论故事板,但我真的建议大家看看 this one 从另一个角度来看。